【发布时间】:2023-01-26 08:46:25
【问题描述】:
使用平面模型,可以进行以下连接:
session.query( EmployeeModel.name, EmployeeDepartment.dept_name ).join( EmployeeDepartment, and_( EmployeeDepartment.employee_id == EmployeeModel.id, EmployeeDepartment.dept_code == 'P01' ) ).all()
在我的例子中,我有以下继承层次结构: `父类(基础):tablename= '父母'
id = Column(BigInteger, primary_key=True)
cls = Column(String(255), nullable=False, index=True)
sub2_id = Column(ForeignKey('parent.id'),
unique=True)
extended_id = Column(
ForeignKey('extended.id'), index=True)
extended = relationship('Extended')
Sub1 类(父类):tablename= 'sub1'
sub1_id = Column(ForeignKey('parent.id'),
primary_key=True)
类 Sub2(Sub1):tablename= 'sub2'
sub2_id = Column(
ForeignKey('sub1.sub1_id'), primary_key=True)
扩展类(基础):tablename= '扩展'
id = Column(BigInteger, primary_key=True)
classname = Column(String(255), nullable=False, index=True)
`
我正在尝试实现以下 SQL 本机查询:
SELECT sub2.sub2_id AS sub2_sub2_id FROM parent JOIN sub1 ON parent.id = sub1.sub1_id AND parent.cls = 'MAIN' JOIN sub2 ON sub1.sub1_id = sub2.sub2_id JOIN extended ON extended.id = parent.extended_id
但是下面的查询结果将是:
query = db.session.query(Sub2.sub2_id).join(Extented)
SELECT sub2.sub2_id AS sub2_sub2_id FROM parent JOIN sub1 ON parent.id = sub1.sub1_id JOIN sub2 ON sub1.sub1_id = sub2.sub2_id JOIN extended ON extended.id = parent.extended_id
是否可以自定义模型或关系来实现所需的查询?
感谢您的帮助。
我曾尝试将和条件添加到关系中,但这没有帮助。
【问题讨论】:
标签: python sqlalchemy flask-sqlalchemy