我想在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()
但它不会筛选用户并显示所有用户技能。
我怎么写这段代码?
答案 0 :(得分:1)
编辑:
使用and_
中的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()
错误的旧答案(不同结果):
使用.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()