Я пытаюсь понять этот раздел документации SQLAlchemy по составным вторичным соединениям .Между двумя соединениями есть оператор точки, который выглядит так, будто я ожидал, что это будет запятая.Я думаю, если это не опечатка, это может быть оператор пересечения, но я не знаю.secondary="join(B, D, B.d_id == D.id)."
это строка.Как видите, перед двойной кавычкой стоит точка.
Что делает эта точка?
Я извлекаю следующий код
d = relationship("D",
secondary="join(B, D, B.d_id == D.id)." ### <-- What is this dot doing?
"join(C, C.d_id == D.id)",
primaryjoin="and_(A.b_id == B.id, A.id == C.a_id)",
secondaryjoin="D.id == B.d_id",
uselist=False
)
Полный код здесь:
class A(Base):
__tablename__ = 'a'
id = Column(Integer, primary_key=True)
b_id = Column(ForeignKey('b.id'))
d = relationship("D",
secondary="join(B, D, B.d_id == D.id)."
"join(C, C.d_id == D.id)",
primaryjoin="and_(A.b_id == B.id, A.id == C.a_id)",
secondaryjoin="D.id == B.d_id",
uselist=False
)
class B(Base):
__tablename__ = 'b'
id = Column(Integer, primary_key=True)
d_id = Column(ForeignKey('d.id'))
class C(Base):
__tablename__ = 'c'
id = Column(Integer, primary_key=True)
a_id = Column(ForeignKey('a.id'))
d_id = Column(ForeignKey('d.id'))
class D(Base):
__tablename__ = 'd'
id = Column(Integer, primary_key=True)