5.2 Подключение к базе данных используя SQLAlchemy
7 из 7 шагов пройдено
3 из 3 баллов  получено

Установка и настройка SQLAlchemy

Установка и настройка SQLAlchemy очень проста и быстра. Чтобы начать работу, сначала необходимо установить SQLAlchemy с помощью pip.

pip install SQLAlchemy

После установки мы можем импортировать его в наш проект Python. Пакет доступен под названием sqlalchemy.

Начало любого приложения SQLAlchemy - это объект, называемый Engine. Движок является отправной точкой для любого приложения SQLAlchemy. Это "домашняя база" для фактической базы данных и ее DBAPI, доставляемая в приложение SQLAlchemy через пул подключений и диалект, который описывает, как разговаривать с определенным типом комбинации базы данных/DBAPI.

Создадим папку backend и файл db.py, в этом файле мы будем хранить все настройки подключения к нашей бд.

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

from sqlalchemy import create_engine


engine = create_engine('sqlite:///ecommerce.db')

Функция create_engine() создает объект Engine на основе URL-адреса. Формат URL-адреса обычно соответствует RFC-1738, за некоторыми исключениями, в том числе подчеркивания, а не тире или точки, принимаются в части "схемы". URL-адреса обычно включают имя пользователя, пароль, имя хоста, поля имени базы данных, а также дополнительные аргументы ключевых слов для дополнительной конфигурации. В некоторых случаях мы передаем путь к файлу, а в других необходимые данные для подключения.

Например, типичная форма URL-адреса базы данных для PostgreSQL:

engine = create_engine('postgresql+psycopg2://youuser:youpassword@localhost/youdb')

То есть используется следующий формат:

Dialect+driver://username:password@host:port/database

Имена диалектов включают в себя идентифицирующее имя диалекта SQLAlchemy, такое имя, как sqlite, mysql, postgresql, oracle или mssql. Имя драйвера - это имя DBAPI, которое будет использоваться для подключения к базе данных, используя все строчные буквы. Полный список подключаемых БД и их синтаксис вы можете посмотреть в документации по SQLAlchemy.

Давайте допишем наш код и разберем его подробнее:

from sqlalchemy import create_engine


engine = create_engine('sqlite:///ecommerce.db', echo=True)

Основным аргументом create_engine является строка URL, переданная как строка "sqlite:///ecommerce.db". Эта строка указывает на три важных факта для Engine:

Какой DBAPI мы используем? Python DBAPI - это драйвер стороннего производителя, который SQLAlchemy использует для взаимодействия с определенной базой данных.

Например, следующая строка: 

sqlite+pysqlite:///ecommerce.db

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

Как найти базу данных? В этом случае наш URL включает текст /ecommerce.db, которая указывает модулю sqlite3, что мы будем использовать базу данных, работающую в файле ecommerce.db. Поскольку SQLite подключается к локальным файлам, формат URL-адреса немного отличается. Часть URL-адреса - это имя файла базы данных. Для относительного пути к файлу требуется три косые черты.

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

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

В следующем шаге мы рассмотрим как подключиться к различным базам данных.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.

Для относительного пути к файлу требуется три косой черты. Предлагаю поменять "косой" на "косые". Интересно а правильно будет назвать их тремя слешами?

@Алексей_Бойко, Спасибо, поправил.