Шпаргалка по SQLAlchemy для начинающих алхимиков

от автора

На данном этапе своего становления в разработке SQLAlchemy мне еще кажется излишним инструментарием. Ведь в моих небольших приложениях мне пока было проще писать все запросы к базам на чистом SQL, упаковывать их в отдельные методы какого-нибудь класса, и всё. Минимум строк кода, всё прекрасно работает. Но от коллег, которые трудились над чем-то грандиозным, я слышал однозначное утверждение, что SQLAlchemy — это база, это понимать надо. Поэтому для себя, а может и не только, я решил написать небольшую шпаргалку с основными понятиями SQLAlchemy, разложенными по полочкам.

  1. SQLAlchemy — библиотека Python для работы с базами данных, поддерживающая как ORM, так и прямую работу с SQL. Я хорошо знаком с ОРМ по прошлой работе, однако в настоящем контексте эта аббревиатура имеет иное значение, поэтому будет пункт 2.

  2. ORM (Object-Relational Mapping) — технология, позволяющая работать с базой данных как с объектами Python.

Далее без лишних слов, чтобы не превратить шпаргалку в статью.

Установка библиотеки

pip install sqlalchemy

Настройка и создание базы данных

from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker  # Создание движка (engine) engine = create_engine('sqlite:///example.db', echo=True)  # Базовый класс для декларативных классов Base = declarative_base()  # Создание сессии Session = sessionmaker(bind=engine) session = Session() 

Определение модели

from sqlalchemy import Column, Integer, String  class User(Base):     __tablename__ = 'users'     id = Column(Integer, primary_key=True)     name = Column(String)     age = Column(Integer)  # Создание таблиц в базе данных Base.metadata.create_all(engine) 

CRUD операции

Создание (Create)

new_user = User(name='John Doe', age=30) session.add(new_user) session.commit() 

Чтение (Read)

# Получение всех пользователей users = session.query(User).all() for user in users:     print(user.name, user.age)  # Получение одного пользователя user = session.query(User).filter_by(name='John Doe').first() print(user.name, user.age) 

Обновление (Update)

user = session.query(User).filter_by(name='John Doe').first() user.age = 31 session.commit() 

Удаление (Delete)

user = session.query(User).filter_by(name='John Doe').first() session.delete(user) session.commit()

Фильтрация и сортировка

Фильтрация

# Пользователи старше 25 лет users = session.query(User).filter(User.age > 25).all()

Сортировка

# Сортировка пользователей по возрасту users = session.query(User).order_by(User.age).all()

Завершение работы сессии

session.close()

Шаблон для создания новых моделей

class ModelName(Base):     __tablename__ = 'modelname'     id = Column(Integer, primary_key=True)     # другие поля     # ...

Основные советы

  1. Используйте Base.metadata.create_all(engine) для создания всех таблиц, определенных в моделях.

  2. Всегда закрывайте сессию (session.close()) после завершения работы с базой данных.

  3. Для отладки установите echo=True в create_engine, чтобы видеть все SQL-запросы, выполняемые SQLAlchemy.

Эта маленькая шпаргалка охватывает лишь самые основные операции и шаги для работы с SQLAlchemy. Для более продвинутых возможностей придется ознакомиться с документацией или полноценными статьями на эту тему.


ссылка на оригинал статьи https://habr.com/ru/articles/819219/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *