Back to questions
Junior — Middle
60
Объясните принцип декларативного определения связей и таблиц в SQLAlchemy.
Answer from AI
sobes.tech AI
В SQLAlchemy декларативный стиль позволяет описывать таблицы и связи между ними с помощью классов Python, которые наследуются от базового класса declarative_base(). Каждому классу соответствует таблица в базе данных, а атрибуты класса — столбцы таблицы.
Связи между таблицами определяются через специальные свойства, например, relationship(), которые устанавливают связи между объектами классов, а также через внешние ключи (ForeignKey). Это позволяет работать с базой данных на уровне объектов, а SQLAlchemy автоматически генерирует нужные SQL-запросы.
Пример:
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import declarative_base, relationship
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
addresses = relationship('Address', back_populates='user')
class Address(Base):
__tablename__ = 'addresses'
id = Column(Integer, primary_key=True)
email = Column(String)
user_id = Column(Integer, ForeignKey('users.id'))
user = relationship('User', back_populates='addresses')
Здесь User и Address — таблицы, а relationship устанавливает двунаправленную связь между ними.