首页 > 解决方案 > 在 SQLAlchemy 中创建具有关系的对象的正确方法是什么

问题描述

我有两个模型,一个 SQLite 数据库上的 Parent 和 Child。

class Parent(Base):
    __tablename__ = 'PARENTS'
    id = Column(Integer, primary_key=True)
    name = Column(String(50), nullable=False, sqlite_on_conflict_unique='IGNORE')
    children = relationship("Child", back_populates="parent")

class Child(Base):
    __tablename__ = 'CHILDREN'
    id = Column(Integer, primary_key=True)
    name = Column(String(50), nullable=False)
    parent_id = Column(Integer, ForeignKey('PARENTS.id'), nullable=False)
    parent = relationship("Parent", back_populates="children")

我需要创建如下的孩子:

session.add(Child(name="...",parent=Parent(name="...")),即我想创建一个具有其名称和父级名称的子级。我想知道哪种方法最好。我可以指示 SA 去为我从 parent.name 中检索 parent.id 选择父母吗?我可以利用某种缓存机制来不为每个添加的子表查询父表(很少更改父表)。当我创建一个新的孩子时,我不需要创建一个新的父母,但我希望它链接到一个已经存在的父母。此外,我需要快速创建一长串孩子(例如,用于播种数据库)。

谢谢。

标签: sqlalchemy

解决方案


推荐阅读