在SQLAlchemy中,假设我们有一个Foo带有复合主键的表,并且Bar有两个外键约束链接它Foo(每个Bar都有两个Foo对象).
我的问题在于relationship函数,这使我重复primaryjoin我已经在ForeightKeyConstraint(违反DRY)中给出的信息(在)中.是否有其他一种结构方式,以便我不必重复信息?有些传递相关的ForeignKeyConstraint方法relationship?
class Foo(Base):
__tablename__ = "Foo"
id_1 = Column(Integer, primary_key=True)
id_2 = Column(Integer, primary_key=True)
class Bar(Base):
__tablename__ = "Bar"
id = Column(Integer, primary_key=True)
foo_1_id_1 = Column(Integer)
foo_1_id_2 = Column(Integer)
foo_2_id_1 = Column(Integer)
foo_2_id_2 = Column(Integer)
__table_args__ = (
ForeignKeyConstraint(
[foo_1_id_1,foo_1_id_2],
[Foo.id_1,Foo.id_2]
),
ForeignKeyConstraint(
[foo_2_id_1,foo_2_id_2],
[Foo.id_1,Foo.id_2]
)
)
foo_1 = relationship(Foo,primaryjoin="(Bar.foo_1_id_1 == Foo.id_1) & (Bar.foo_1_id_2 == Foo.id_2)")
foo_2 = relationship(Foo,primaryjoin="(Bar.foo_2_id_1 == Foo.id_1) & (Bar.foo_2_id_2 == Foo.id_2)")
Run Code Online (Sandbox Code Playgroud)
谢谢.
| 归档时间: |
|
| 查看次数: |
5607 次 |
| 最近记录: |