Установление связи - двигатель¶
Началом любого приложения SQLAlchemy является объект под названием Engine
. Этот объект действует как центральный источник соединений с определенной базой данных, предоставляя как фабрику, так и место хранения, называемое connection pool для этих соединений с базой данных. Фабрика обычно является глобальным объектом, созданным только один раз для определенного сервера баз данных, и конфигурируется с помощью строки URL, которая описывает, как она должна подключаться к узлу базы данных или бэкенду.
В этом учебнике мы будем использовать базу данных SQLite, содержащую только память. Это простой способ тестирования, не требующий наличия уже существующей базы данных. База Engine
создается с помощью create_engine()
, указывая флаг create_engine.future
, установленный на True
, чтобы полностью использовать возможности 2.0 style:
>>> from sqlalchemy import create_engine
>>> engine = create_engine("sqlite+pysqlite:///:memory:", echo=True, future=True)
Основным аргументом create_engine
является строка URL, переданная выше как строка "sqlite+pysqlite:///:memory:"
. Эта строка указывает Engine
на три важных факта:
С какой базой данных мы взаимодействуем? Это часть
sqlite
, которая в SQLAlchemy связывается с объектом, известным как dialect.Что DBAPI мы используем? Python DBAPI - это сторонний драйвер, который SQLAlchemy использует для взаимодействия с определенной базой данных. В данном случае мы используем имя
pysqlite
, которое в современном Python является интерфейсом стандартной библиотеки sqlite3 для SQLite. Если это имя опущено, SQLAlchemy будет использовать стандартный интерфейс DBAPI для конкретной выбранной базы данных.Как мы находим базу данных? В данном случае наш URL включает фразу
/:memory:
, которая является индикатором для модуляsqlite3
, что мы будем использовать базу данных in-memory-only. Этот тип базы данных идеально подходит для экспериментов, поскольку он не требует ни сервера, ни создания новых файлов.
Мы также указали параметр create_engine.echo
, который будет предписывать Engine
записывать весь SQL, который он выдает, в логгер Python, который будет писать в стандартный выход. Этот флаг является сокращенным способом настройки Python logging more formally и полезен для экспериментов в сценариях. Многие примеры SQL будут включать этот вывод журнала SQL под ссылкой [SQL]
, при нажатии на которую будет показано полное взаимодействие SQL.