Полное руководство по использованию декларативной базы в FastAPI

FastAPI — это современная высокопроизводительная веб-платформа для создания API с помощью Python. Он использует возможности библиотеки SQLAlchemy ORM (объектно-реляционное сопоставление) для упрощения взаимодействия с базой данных. В этой статье мы рассмотрим использование класса declarative_baseв FastAPI и обсудим различные методы, которые можно использовать для взаимодействия с базой данных с помощью SQLAlchemy.

Что такое декларативная база?
declarative_base— это ключевой компонент SQLAlchemy, который позволяет разработчикам определять модели базы данных с помощью классов Python. Он обеспечивает декларативный синтаксис для определения таблиц, столбцов, связей и других элементов схемы базы данных. Декларативные модели упрощают работу с базами данных, предоставляя интуитивно понятный интерфейс Pythonic.

Методы в декларативной базе:

  1. Определение класса модели:
    Чтобы создать модель с использованием declarative_base, вам необходимо определить класс, который наследуется от declarative_base(). Этот класс представляет таблицу базы данных, а его атрибуты сопоставляются со столбцами таблицы.
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String)
    email = Column(String)
  1. Создание таблиц.
    Определив класс модели, вы можете создать соответствующую таблицу базы данных с помощью метода create_all().
from sqlalchemy import create_engine
engine = create_engine('sqlite:///mydatabase.db')
Base.metadata.create_all(bind=engine)
  1. Запрос данных.
    Вы можете выполнять различные операции запроса над моделями, например извлечение всех записей, фильтрацию на основе условий и упорядочивание результатов.
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
# Retrieve all users
users = session.query(User).all()
# Filter users based on a condition
filtered_users = session.query(User).filter(User.username == 'john').all()
# Order users by username
ordered_users = session.query(User).order_by(User.username).all()
  1. Добавление записей.
    Чтобы добавить новые записи в базу данных, вы можете создать экземпляры класса модели и добавить их в сеанс.
new_user = User(username='alice', email='alice@example.com')
session.add(new_user)
session.commit()
  1. Обновление записей.
    Вы можете обновить существующие записи, изменив атрибуты экземпляра модели и зафиксировав изменения.
user = session.query(User).filter(User.username == 'alice').first()
user.email = 'newemail@example.com'
session.commit()
  1. Удаление записей.
    Чтобы удалить записи, вы можете запросить экземпляр модели и вызвать для него метод delete().
user = session.query(User).filter(User.username == 'alice').first()
session.delete(user)
session.commit()

В этой статье мы рассмотрели использование declarative_baseв FastAPI и обсудили различные методы взаимодействия с базой данных с помощью SQLAlchemy. Используя возможности декларативного синтаксиса SQLAlchemy, разработчики могут с легкостью создавать надежные и эффективные API. Понимание этих методов позволит вам эффективно работать с базами данных в ваших приложениях FastAPI.