直接查询关联表对象

时间:2014-01-24 14:50:36

标签: 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'))
)

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

tasks_rel = task_user.join(Task).join(User).filter(Task.group_id == group_id)

导致此错误:

AttributeError: 'Join' object has no attribute 'filter'

1 个答案:

答案 0 :(得分: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)