SQLAlchemy — что это такое и как с ней химичить? Часть 1

SQLAlchemy — что это такое и как с ней химичить? Часть 1

Python и 1000 программ

SQLAlchemy - Библиотека языка программирования Python. Используется для работы с реляционными СУБД с применением ORM. Предназначен для синхронизации объектов python и записей реляционной базы данных.

При помощи этой библиотеки можно описывать структуры баз данных и способы взаимодействия с ними на Python без помощи SQL.

Основные возможности:

Использование ORM не является обязательным
Устоявшаяся архитектура
Возможность использовать SQL, написанный вручную
Поддержка транзакций
Создание запросов с использованием функций и выражений Python
Модульность и расширяемость
Дополнительная возможность раздельного определения объектного отображения и классов
Поддержка составных индексов
Поддержка отношений между классами, в том числе «один-ко-многим» и «многие-ко-многим»
Поддержка ссылающихся на себя объектов
Предварительная и последующая обработка данных (параметров запроса, результата)
и другие

Преимущества данной библиотеки в том, что параметры запросов экранируются, благодаря которым атаки типа внедрение SQL-кода маловероятны. Также есть возможность повторного использования запроса к серверу баз данных, что позволит ему в некоторых случаях снова применить план выполнения запроса. Ко всему прочему, при должном подходе, есть возможность перенести код Python, совместимый с несколькими back-end СУБД.


Установка SQLAlchemy

Для начало нужно установить библиотеку с нуля, при помощи setuptools. Если все установлено, можно ввести команду в консоль

Данная команда установит последнюю доступную версию SQLAlchemy из Python Cheese Shop на ваш компьютер.


Также есть возможность установить библиотеку просто скачав архив с официального сайта и выполнив установочный скрипт setup.py


Установка при помощи pip:

Для того чтобы проверить версию библиотеки пропишите следующее:

Соединение с базой данных

Для этого мы будем использовать только базу данных SQLite, храняющуюся в памяти. Для соединения с СУБД, нужно прописать функцию create_engine():

флаг "echo" предназначен для ведения лога через стандартный модуль loggin Python

Когда он будет включен, мы сможем увидеть все созданные нами SQL-запросы. В любом случае отладочный вывод можно убрать поставив:

Создание таблицы в базе данных

Далее создаем таблицу при помощи CREATE TABLE(Все команды sql прописываются в верхнем регистре), параметры которого будут взяты из метаданных нашей таблицы. Пропишем метод create_all() и передаем ему наш объект engine, который будет указывать на нашу базу. Ее можно выполнить множество раз, все равно будет произведена проверка присутствия таблицы перед ее созданием


Возможно те кто уже изучал синтаксис SQL могут заметить, почему колонки VARCHAR создается без указания длины? в SQLite и PostgreSQL вполне разрешен такой тип данных, но многие другие СУБД подобное не одобряют. Для того чтобы выполнить данное задание, длина должна быть передана строкам как здесь:

В таблице поле "длина" в типах String, как и простая разрядность/точность в Integer, Numeric и т.д не используются более нигде, исключением является создание таблицы.

Report Page