Dans SQLAlchemy, imaginez que nous avons une table Foo
avec une clé primaire composée, et Bar
qui a deux contraintes de clé étrangère le reliant à Foo
(chaque Bar
a deux Foo
objets).
Mon problème est le suivant relationship
ce qui me fait répéter l'information (dans la fonction primaryjoin
) que j'ai déjà donné dans le ForeightKeyConstraint
(violant DRY). Existe-t-il un autre moyen de structurer ce processus afin de ne pas avoir à répéter l'information ? Un moyen de transmettre les données pertinentes ForeignKeyConstraint
a 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)")
Gracias.