我有3个表,用户,项目和项目_用户是_管理表,我正在尝试编写ORM以从中获取数据
我的模型在这里:https://pastebin.com/ZrmhKyNL
在简单的SQL中,我们可以连接并选择特定的列,并获得所需的输出。但在ORM中,当我编写如下查询时:
sql = """ select * from
projects p, users u, projects_users pu
where
p.name = '%s' and
p.id = pu.project_id and
pu.user_id = u.id and
p.is_active = true and
u.is_active = true
""" % project_name
它工作正常,并以以下格式返回响应:
[ { 以上3个表的所有列。 } ]
但是,当我尝试将其转换为sqlalchamey ORM时,效果并不理想:
return (
db.query(User)
.filter(Project.id == ProjectsUser.project_id)
.filter(ProjectsUser.user_id == User.id)
.filter(Project.is_active == True)
.filter(User.is_active == True)
.filter(Project.name == project_name)
.all()
)
我想将is_admin值与用户对象一起返回。这似乎是非常常见的用例,但我找不到任何与SQLalchemy ORM相关的解决方案
如果这是一对一的关系,这意味着对于每个用户,在
admin
表中只能有一个条目,那么可以添加一列作为反向引用:然后,您可以只查询表用户,并通过
user.admin.is_admin
访问关系中的值阅读更多:
相关问题 更多 >
编程相关推荐