В предыдущей главе мы обсудили язык выражений в SQLAlchemy. Теперь давайте перейдем к шагам, связанным с подключением к базе данных.
Класс Engine связывает пул и диалект вместе, обеспечивая источник подключения и поведения базы данных. Объект класса Engine создается с помощью функции create_engine () .
Функция create_engine () принимает базу данных в качестве одного аргумента. База данных нигде не должна быть определена. Стандартная форма вызова должна отправлять URL в качестве первого позиционного аргумента, обычно это строка, которая указывает на диалект базы данных и аргументы соединения. Используя приведенный ниже код, мы можем создать базу данных.
>>> from sqlalchemy import create_engine >>> engine = create_engine('sqlite:///college.db', echo = True)
Для базы данных MySQL используйте следующую команду —
engine = create_engine("mysql://user:pwd@localhost/college",echo = True)
Чтобы особо упомянуть DB-API, который будет использоваться для соединения, строка URL-адреса принимает вид:
dialect[+driver]://user:password@host/dbname
Например, если вы используете драйвер PyMySQL с MySQL , используйте следующую команду —
mysql+pymysql://<username>:<password>@<host>/<dbname>
Флаг echo — это ярлык для настройки ведения журнала SQLAlchemy, который выполняется с помощью стандартного модуля ведения журналов Python. В последующих главах мы изучим все сгенерированные SQL. Чтобы скрыть подробный вывод, установите для атрибута echo значение None . Другие аргументы функции create_engine () могут быть специфическими для диалекта.
Функция create_engine () возвращает объект Engine . Некоторые важные методы класса Engine —
подключения ()
Возвращает объект соединения
выполнить ()
Выполняет конструкцию оператора SQL
начать()
Возвращает менеджер контекста, доставляющий Соединение с установленной Транзакцией. После успешной операции транзакция фиксируется, иначе она откатывается
распоряжаться ()
Уничтожает пул соединений, используемый Engine
Водитель()
Название драйвера диалекта, используемого двигателем
table_names ()
Возвращает список всех имен таблиц, доступных в базе данных.
сделка()
Выполняет данную функцию в пределах транзакции