使用sqlachemy进行3个表格的关联查询
时间: 2024-02-11 16:04:27 浏览: 15
假设有三个表格:A、B、C,其中表格 A 拥有一个外键指向表格 B,表格 B 拥有一个外键指向表格 C。使用 SQLAlchemy 进行这三个表格的关联查询可以使用如下代码:
```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')
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()
```
这段代码定义了三个表格 A、B、C,其中表格 A 的 b_id 列是一个外键,指向表格 B 的 id 列,表格 B 的 c_id 列是一个外键,指向表格 C 的 id 列。在查询时,使用 `join` 方法进行关联查询,使用 `filter` 方法进行条件过滤。最终的查询结果为所有满足条件“C 表格中 name 列为 'example'”的 A 实例。