Жаркий сезон
Жаркий сезон
Скидки до 55 000 ₽ + вторая профессия в подарок
Главная | Все статьи | Код

Работа с базами данных в Python с помощью SQLAlchemy: пошаговое руководство

Python Время чтения статьи ~4 минуты
Работа с базами данных в Python с помощью SQLAlchemy: пошаговое руководство главное изображение

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

Познакомьтесь с Python бесплатно

Начните с этих 5 уроков

Что такое SQLAlchemy Python

SQLAlchemy — это библиотека с открытым исходным кодом, созданная для синхронизации объектов Python с записями реляционных баз данных: Oracle, PostgreSQL, Microsoft SQL Server и др. SQLAlchemy создает модель преобразования информации из базы данных в объекты Python. Библиотека состоит из двух компонентов: SQLAlchemy Core и SQLAlchemy ORM.

  • SQLAlchemy Core — компонент для взаимодействия библиотеки с SQL базами данных. Он определяет тип базы данных, преобразует код Python в понятные для баз запросы, работает с таблицами, индексами, колонками и т. п.
  • SQLAlchemy ORM — интерфейс для управления базами данных через модели и объекты. Он передает запросы прямо в коде Python и не требует их записи на языке SQL.

Особенности SQLAlchemy Python

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

SQLAlchemy позволяет формировать запросы через функции и выражения Python. Библиотека состоит из модулей и имеет высокий уровень масштабируемости. Она совместима с написанными вручную SQL-запросами.

С чего начать работу в SQLAlchemy Python

Установите библиотеку через команду  pip install sqlalchemy.

Библиотека SQLAlchemy поддерживает ряд диалектов для связи с различными базами: PostgreSQL, Oracle, Microsoft SQL Server (MS SQL), MySQL, SQLite. Рассмотрим основные шаги по подключению и управлению базами данных.

Попробуйте себя в Python

Начать с 5 бесплатных уроков

Добавляем таблицу

Для начала необходимо настроить подключение к базе данных и создать объект engine. Он отвечает за управление базой данных и выполнение запросов SQL:

import sqlalchemy as db

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

Команда conn = engine.connect()подключит базу, а metadata = db.MetaData()будет хранить данные о ее устройстве.

Теперь можно создавать объект «‎таблица». Пусть это будет база данных с постами в социальных сетях ‎и комментариями к ним:

posts = db.Table(posts, metadata,

db.Column(post_id, db.Integer, primary_key=True),

db.Column(post_name, db.Text),

db.Column(post_author, db.Text),

db.Column(post_date, db.String),

db.Column(post_is_commented, db.Boolean, default=False)

)

Используем следующую команду, чтобы создать объект и запустить наш код: metadata.create_all(engine)

База будет выглядеть так:

post_id post_name post_author post_date post_is_commented

Заполняем таблицу

Для добавления элементов в нашу базу необходимо создать запрос в виде объекта.

insertion_query = posts.insert().values([

{post_name:5 способов заработать на фрилансе, post_author:Миша Романов, post_date: 18.05.24},

{post_name:Легкий способ набрать подписчиков, post_author:Иван Демидов, post_date: 19.05.24}

])

Столбцы post_id и post_is_commented заполняются автоматически. Для передачи этого запроса в базу данных и внесения новой записи мы будем использовать команду conn.execute(insertion_query)

Теперь наша база выглядит так:

post_id post_name post_author post_date post_is_commented
1 5 способов заработать на фрилансе Миша Романов 18.05.24 False
2 Легкий способ набрать подписчиков Иван Демидов 19.05.24 False

База данных с постами готова! Самое время попробовать выполнить некоторые базовые манипуляции с ее данными — отфильтровать, обновить и удалить.

Рекомендуем попробовать

5 бесплатных уроков Python

Фильтруем данные (where)

Используем стандартный метод where для создания нового запроса. Функция покажет посты только интересующего нас автора:

select_author_query = db.select([posts]).where(posts.columns.post_author==Миша Романов)

select_all_results = conn.execute(select_author_query)

print(select_all_results.fetchall())

Вывод:

[(1, '5 способов заработать на фрилансе', 'Миша Романов', '18.05.24', False)]

Обновляем данные (update)

Воспользуемся функцией update для внесения изменений в дату публикации одного из постов:

update_query = db.update(posts).where(posts.columns.post_name==Легкий способ набрать подписчиков).values(post_date=19.04.24)

conn.execute(update_query)

Чтобы проверить обновления в консоли, отправим запрос:

select_all_query = db.select([posts])

select_all_results = conn.execute(select_all_query)

print(select_all_results.fetchall())

Вывод:


[(1, '5 способов заработать на фрилансе', 'Миша Романов', '18.05.24', False), (2, 'Легкий способ набрать подписчиков', 'Иван Демидов', '19.04.24', False)]

Познакомьтесь с Python бесплатно

Начните с этих 5 уроков

Удаляем данные (delete)

Ненужные записи в базе данных всегда можно удалить с помощью запроса:

delete_query = db.delete(posts).where(posts.columns.post_name==5 способов заработать на фрилансе)

conn.execute(delete_query)

Для проверки успешности обновлений выведем данные в консоль с помощью запроса:

select_all_query = db.select([posts])

select_all_results = conn.execute(select_all_query)

print(select_all_results.fetchall())

Вывод:

[(2, 'Легкий способ набрать подписчиков', 'Иван Демидов', '19.04.24', False)]

Для корректного завершения работы с БД необходимо использовать команду conn.close().

Это базовые функции библиотеки SQLAlchemy Python  В рамках курса «Python-разработчик» вы изучите теорию и будете создавать и работать с базами данных, используя этот и другие инструменты Python на практике.

Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Осваивайте разработку веб-страниц, оживляйте дизайн макетов, публикуйте сайты и приложения. Отслеживайте ошибки в интерфейсе и устраняйте их
10 месяцев
с нуля
Старт 25 июля
профессия
от 6 300 ₽ в месяц
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 25 июля
профессия
от 6 183 ₽ в месяц
Выполняйте ручное тестирование веб-приложений, находите ошибки в продукте. Узнайте все о тест-дизайне.
4 месяца
с нуля
Старт 25 июля
профессия
от 6 300 ₽ в месяц
Научитесь разработке веб-приложений, сайтов и программного обеспечения на языке Java, программируйте и используйте структуры данных
10 месяцев
с нуля
Старт 25 июля
профессия
от 5 025 ₽ в месяц
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 25 июля
профессия
от 6 300 ₽ в месяц
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 25 июля
профессия
от 5 840 ₽ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 25 июля
профессия
от 9 900 ₽ в месяц
Обучитесь разработке визуальной части сайта — фронтенда, а также реализации серверной — бэкенда. Освойте HTML, CSS, JavaScript
16 месяцев
с нуля
Старт 25 июля
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 июля
профессия
новый
Организовывайте процесс автоматизации тестирования на проекте, обучитесь языку программирования JavaScript, начните управлять процессом тестирования
8 месяцев
c опытом
в разработке
Старт 25 июля