Учебники

SQLAlchemy Core — подключение к базе данных

В предыдущей главе мы обсудили язык выражений в 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 ()

Возвращает список всех имен таблиц, доступных в базе данных.

сделка()

Выполняет данную функцию в пределах транзакции