Как установить и получить записи отношений с помощью SQLAlchemy? - PullRequest
0 голосов
/ 28 февраля 2019

Документация очень четко объясняет, как определять отношения, такие как «один ко многим»:

class Parent(Base):
    __tablename__ = 'parent'
    id = Column(Integer, primary_key=True)
    children = relationship("Child")

class Child(Base):
    __tablename__ = 'child'
    id = Column(Integer, primary_key=True)
    parent_id = Column(Integer, ForeignKey('parent.id'))

Но это не дает никаких примеров того, как мне было бы установить или получить связанныеchildren.Как я могу, например, запросить Parent из базы данных и получить коллекцию его дочерних элементов, а затем добавить или удалить некоторые?Есть ли ресурс с примерами для каждого отношения?

1 Ответ

0 голосов
/ 01 марта 2019

Основываясь на этого урока из документации, короткий ответ таков: когда отношение представлено одним объектом, как здесь:

class Child:
    parent_id = Column(Integer, ForeignKey('parent.id'))
    parent = relationship("Parent", back_populates="children")

назначение объекта класса Parent дляэтого будет достаточно:

parent = Parent()
child.parent = parent

и parent = child.parent получит родительский объект.Согласно руководству, это происходит из-за событий изменения атрибута и оценивается в Python .Когда отношение представлено коллекцией, возможны различные типы коллекций, такие как наборы и словари, но по умолчанию используется список Python :

class Parent:
    children = relationship("Child", back_populates="parent")

Так что здесь вы можете назначитьсписок дочерних объектов:

parent.children = [
    Child(),
    Child()
]

Или получить список объектов из свойства children и изменить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...