直接查询关联表对象

Jel*_*teF 1 python sql sqlalchemy

我必须直接查询关系,因为我必须单独显示它们.

task_user = db.Table(
    'pimpy_task_user',
    db.Column('task_id', db.Integer, db.ForeignKey('pimpy_task.id')),
    db.Column('user_id', db.Integer, db.ForeignKey('user.id'))
)
Run Code Online (Sandbox Code Playgroud)

我如何在SQLAlchemy中执行此操作?当我尝试这个:

tasks_rel = task_user.join(Task).join(User).filter(Task.group_id == group_id)
Run Code Online (Sandbox Code Playgroud)

它会导致此错误:

AttributeError: 'Join' object has no attribute 'filter'
Run Code Online (Sandbox Code Playgroud)

zzz*_*eek 5

你上面的用法是创建一个join()构造,它是一个Core(非ORM)构造,表示两个表的join()(但不是一个完整的select()).

使用ORM时,通常使用Query对象启动SELECT.从类本身查询是像flask-sqlalchemy这样的扩展提供的模式,但这些扩展通常在这方面令人困惑.给定任何类或表,您可以使用Query对象查询它:

session.query(task_user).join(Task).join(User).filter(Task.group_id == group_id)
Run Code Online (Sandbox Code Playgroud)