我想在 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()
但它不会过滤用户并显示所有用户的技能。
我该如何编写这段代码?
EDIT:
Use and_
from sqlalchemy
加入join
状况
from sqlalchemy import and_
skills = db.session.query(Skill, User_Skill.skill_id).\
outerjoin(User_Skill, and_(User_Skill.skill_id==Skill.id,
User_Skill.user_id==4)).\
order_by(Skill.name).all()
旧的错误答案(不同的结果):
Use .filter
来限制你的结果。将您的查询更改为:
skills = db.session.query(Skill, User_Skill.skill_id).\
outerjoin(User_Skill, User_Skill.skill_id==Skill.id).\
filter(User_Skill.user_id==4).\
order_by(Skill.name).all()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)