使用sqlachemy进行3个表格的关联查询,指定B与C的关联键
时间: 2024-02-11 15:04:31 浏览: 47
sql多表关联查询,三表关联查询
5星 · 资源好评率100%
如果需要在 SQLAlchemy 中指定表格 B 与 C 之间的关联键,则需要在 B 类中的 `relationship` 方法中指定 `foreign_keys` 参数。以下是一个示例代码:
```python
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
class A(Base):
__tablename__ = 'a'
id = Column(Integer, primary_key=True)
b_id = Column(Integer, ForeignKey('b.id'))
b = relationship('B', backref='a')
class B(Base):
__tablename__ = 'b'
id = Column(Integer, primary_key=True)
c_id = Column(Integer, ForeignKey('c.id'))
c = relationship('C', backref='b', foreign_keys=[c_id])
class C(Base):
__tablename__ = 'c'
id = Column(Integer, primary_key=True)
name = Column(String)
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
query = session.query(A).join(B).join(C)
result = query.filter(C.name == 'example').all()
```
在这段代码中,在 B 类的 `relationship` 方法中指定了 `foreign_keys` 参数为 `[c_id]`,即表格 B 的 c_id 列与表格 C 的 id 列建立关联。其他部分的代码与前面的示例代码相同。
阅读全文