[英]Raw SQL to SQLAlchemy
我的原始sql语句的一部分看起来像这样:
select /*some selects*/
if(/*condition*/, table1.price , if(/*condition*/, t2.price, t3.price)) as price
/*some joins*/
left join table2 t2 on table1.type=t2.id
left join table3 t3 on table1.type=t3.id
该语句按预期工作。
SQLAlchemy ORM:
query = db_session.query(Table1,\
func.IF(Table1.field5 == 5, Table1.price,\
func.IF(Table1.new_model == 1, Table2.price, Table3.price))
#+some selects
#+some joins
query = query.join(Table2, Table1.type == Table2.id)\
.join(table3, Table1.type == Table3.id)
而且它的工作方式不同。 它返回仅连接到Table2的结果。 而且,在查询中不使用此联接将返回所需的行,但是当然没有此Table2和Table3的必需字段。
我怎么了
您需要对LEFT JOIN
连接使用outerjoin
LEFT JOIN和JOIN是不同的操作。
对于LEFT JOIN,请使用outerjoin
。 对于JOIN(又名INNER JOIN),请使用join
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.