[英]How to Select Query with “as” and Join Table in SQLAlchemy ORM
[英]What is the proper SQLAlchemy ORM structure for a join table (1:multiple table relationship)?
我正在尝试创建一个连接表,以便:
Table A.b_id = Table B.id
AND
Table A.c_id = Table C.id
这样,我通过创建一个中间“连接”表来定义 B 和 C 之间的关系来保护空间。
下面是定义这个的正确方法吗? 我一直在查看文档,但它们只定义了 1:many 和 many:1 与示例的关系 - 我没有看到任何情况,例如我所描述的情况。 提前致谢!
class B(Base):
__tablename__ = "b"
id = Column(Integer, primary_key=True)
class C(Base):
__tablename__ = "c"
id = Column(Integer, primary_key=True)
class A(Base):
__tablename__ = "a"
id = Column(Integer, primary_key=True)
b_id = Column(Integer, ForeignKey("b.id"))
b = relationship("B")
c_id = Column(Integer, ForeignKey("c.id"))
c = relationship("C")
仅供任何展望未来的人参考。 我能够通过阅读文档来解决这个问题(谁会猜到?)。 正确的方法如下:
from sqlalchemy import Column, ForeignKey, Integer,
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
class B(Base):
__tablename__ = "b"
id = Column(Integer, primary_key=True)
a = relationship("A", back_populates("b"))
class C(Base):
__tablename__ = "c"
id = Column(Integer, primary_key=True)
a = relationship("A", back_populates("c"))
class A(Base):
__tablename__ = "a"
id = Column(Integer, primary_key=True)
b_id = Column(Integer, ForeignKey("b.id"))
c_id = Column(Integer, ForeignKey("c.id"))
b = relationship("B", foreign_keys=[b_id], back_populates("a"))
c = relationship("C", foreign_keys=[c_id], back_populates("a"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.