Logo Craft Homelab Docs Контакты Telegram

Установка подключения - 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 три важных факта:

  1. С какой базой данных мы взаимодействуем? Это часть sqlite выше, которая связывает SQLAlchemy с объектом, известным как диалект.

  2. Какой DBAPI мы используем? Python DBAPI - это сторонний драйвер, который SQLAlchemy использует для взаимодействия с конкретной базой данных. В данном случае мы используем имя pysqlite, которое в современном Python представляет собой стандартный библиотечный интерфейс sqlite3 для SQLite. Если параметр опущен, SQLAlchemy будет использовать DBAPI по умолчанию для выбранной базы данных.

  3. Как мы находим базу данных? В нашем случае URL включает фразу /:memory:, которая является индикатором для модуля sqlite3, что мы будем использовать базу данных, размещённую только в памяти. Такая база данных идеально подходит для экспериментов, поскольку не требует ни сервера, ни создания новых файлов.

Ленивое подключение

Engine, когда он впервые возвращается функцией create_engine(), фактически ещё не пытался подключиться к базе данных; это происходит только при первом запросе на выполнение задачи с базой данных. Это программный шаблон проектирования, известный как ленивая инициализация.

Мы также указали параметр create_engine.echo, который проинструктирует Engine логировать все SQL-запросы, которые он генерирует, в Python-логгер, записывающий данные в стандартный вывод. Этот флаг - это краткий способ более формальной настройки логирования Python и полезен для экспериментов в скриптах.