在SQLAlchemy Declarative中创建指向相关表的链接

时间:2014-04-23 11:43:55

标签: python sqlalchemy flask-sqlalchemy

我正在使用Flask与SQLAlchemy和Declarative,但我是新手。我有一个父母和一个孩子 - Tabele / Class。

在我的数据库中有成千上万的父母。到目前为止一切正常,但这两个表并没有为用户提供良好的链接。

我想在父级中提供一个链接来创建(并最终还会更新)一个孩子,而无需用户再次找到父级ID很长的名单。

我已经研究了documentation of Declarative,但没有发现如何使其发挥作用。

  • 是否有(简单)方法在相关类之间进行链接? (我不想显示来自其他类的数据,我想创建一个新的/更新现有条目。)
  • 如果不可能,我如何在创建新条目时预定义链接中已有的某些值(例如id)?

到目前为止我的代码是:

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

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

1 个答案:

答案 0 :(得分:1)

当我正确理解您的问题时,您可以执行以下操作:

在子类中定义一个字段:

criterias = relationship('Criteria', secondary=criteria_controls, backref=backref('criteria', lazy='dynamic'))

有关更多帮助,请参阅Backref documentation

如果这有帮助,请告诉我。 也许您可以提供您的亲子关系示例?

欢呼声

编辑:

我现在看到我的回答并没有完全找到你。也许它比你想象的要简单。 我仍然不太确定你想要实现什么,但你可以通过这样做来创建一个新的孩子:

p = Parent()
p.child = Child()
db.add(p)
db.commit()

您应该能够通过子字段直接访问子对象。

验证试试这个:

print(type(p.child))

希望这会有所帮助。