Установка подключения - Engine
Начало работы любого приложения SQLAlchemy - это объект под названием Engine. Этот объект выступает в качестве центрального источника подключений к конкретной базе данных, предоставляя как фабрику, так и хранилище, называемое пулом соединений, для этих подключений к базе данных. Engine обычно является глобальным объектом, создаваемым один раз для конкретного сервера базы данных, и настраивается с помощью URL-строки, которая описывает, как он должен подключаться к хосту базы данных или бэкенду.
В этом руководстве мы будем использовать базу данных SQLite, размещённую исключительно в оперативной памяти. Это простой способ протестировать всё, не требующий предварительной настройки реальной базы данных. Engine создаётся с помощью функции create_engine():
>>> from sqlalchemy import create_engine
>>> engine = create_engine("sqlite+pysqlite:///:memory:", echo=True)
Основной аргумент create_engine - это URL-строка, в данном случае переданная как "sqlite+pysqlite:///:memory:". Эта строка сообщает Engine три важных факта:
-
С какой базой данных мы взаимодействуем? Это часть
sqliteвыше, которая связывает SQLAlchemy с объектом, известным как диалект. -
Какой DBAPI мы используем? Python DBAPI - это сторонний драйвер, который SQLAlchemy использует для взаимодействия с конкретной базой данных. В данном случае мы используем имя
pysqlite, которое в современном Python представляет собой стандартный библиотечный интерфейсsqlite3для SQLite. Если параметр опущен, SQLAlchemy будет использовать DBAPI по умолчанию для выбранной базы данных. -
Как мы находим базу данных? В нашем случае URL включает фразу
/:memory:, которая является индикатором для модуляsqlite3, что мы будем использовать базу данных, размещённую только в памяти. Такая база данных идеально подходит для экспериментов, поскольку не требует ни сервера, ни создания новых файлов.
Ленивое подключение
Engine, когда он впервые возвращается функцией create_engine(), фактически ещё не пытался подключиться к базе данных; это происходит только при первом запросе на выполнение задачи с базой данных. Это программный шаблон проектирования, известный как ленивая инициализация.
Мы также указали параметр create_engine.echo, который проинструктирует Engine логировать все SQL-запросы, которые он генерирует, в Python-логгер, записывающий данные в стандартный вывод. Этот флаг - это краткий способ более формальной настройки логирования Python и полезен для экспериментов в скриптах.
