【发布时间】:2019-08-10 23:27:42
【问题描述】:
我想在 sqlalchemy 中实现左外连接。 sql查询是这样的:
select * from skills left join user__skill on user__skill.skill_id=skills.id and user__skill.user_id=4
我在 sqlalchemy 中写的是:
skills = db.session.query(Skill, User_Skill.skill_id).\
outerjoin(User_Skill, User_Skill.skill_id==Skill.id and User_Skill.user_id==4).\
order_by(Skill.name).all()
但它不会过滤用户并显示所有用户的技能。
如何编写这段代码?
【问题讨论】:
-
您是否尝试过将您的 sql 与 sqlalchemy 生成的 sql 进行比较?
-
我必须如何创建它?
-
nicolascadou.com/blog/2014/01/… 你可以只打印你的查询(没有
.all())或者使用特定的sql方言来查看发送到数据库的sql。 -
是的。是这样的:
SELECT skills.id AS skills_id, skills.name_en AS skills_name_en, skills.name_fa AS skills_name_fa, user__skill.skill_id AS user__skill_skill_id FROM skills LEFT OUTER JOIN user__skill ON user__skill.skill_id = skills.id ORDER BY skills.name生成的查询中没有user__skill.user_id=4条件。 -
关于为什么使用
and操作 不起作用的背景:stackoverflow.com/questions/42681231/…
标签: flask sqlalchemy outer-join