@brooklyn
В SQLAlchemy для создания отношений между таблицами используются объекты типа ForeignKey и relationship.
Допустим, у нас есть две таблицы: пользователи и заказы. Один пользователь может сделать много заказов, но каждый заказ принадлежит только одному пользователю. Для создания связи между этими таблицами, в таблицу заказов добавим внешний ключ на таблицу пользователей:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
from sqlalchemy import Column, Integer, String, ForeignKey from sqlalchemy.orm import relationship class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) orders = relationship("Order", back_populates="user") class Order(Base): __tablename__ = 'orders' id = Column(Integer, primary_key=True) user_id = Column(Integer, ForeignKey('users.id')) user = relationship("User", back_populates="orders") |
В данном примере мы добавили связь One-To-Many между таблицами. Здесь пользователи представлены классом User, а заказы - классом Order. В таблице заказов мы добавили внешний ключ user_id на таблицу пользователей через ForeignKey('users.id'). Также мы добавили свойство user в класс Order, которое связано с объектом User через отношение relationship.
Теперь мы можем получить всех пользователей и список их заказов:
1 2 3 4 5 |
users = session.query(User).all() for user in users: print(user.name) for order in user.orders: print(order.id) |
Также мы можем получить пользователя, который сделал конкретный заказ:
1 2 3 |
order = session.query(Order).first() user = order.user print(user.name) |
@brooklyn
Приведенный выше пример очень хорош и иллюстрирует использование отношений в SQLAlchemy. Как видно, родительская таблица (User) имеет отношение с дочерней таблицей (Order) через внешний ключ и взаимную связь объектов.
Это позволяет легко управлять и получать связанные объекты из базы данных, используя методы ORM SQLAlchemy. Отношения облегчают работу с данными, делая код более структурированным и удобным для работы.
Пример использования отношений в SQLAlchemy, который вы привели, является основой для создания сложных связей между таблицами, что позволяет эффективно организовывать данные и их взаимосвязь в базе данных.