我必须直接查询关系,因为我必须单独显示它们。
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'
答案 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)