我的原始 sql 语句的开头如下所示:
select if(substr(Table.order_id,1,8)='STRING', Table1.name, t=Table2.type)
试图在 SQLAlchemy 查询中重写它:
query = db_session.query(Table,\
Table1.name if Table.order_id[1:8] == 'STRING' else Table2.type)
但它返回了Operator 'getitem' is not supported on this expression
。
如何在不接触模型的情况下将此条件添加到我的 ORM 查询中?
或者如何在查询参数中添加原始sql语句?
PS:我不希望对模型进行任何更改。
最佳答案
您需要使用 Functions :
from sqlalchemy import func
q = db_session.query(
func.IF(func.substr(Table.order_id, 1, 8) == 'STRING', Table1.name, Table2.type)
)
关于python - SQLAlchemy 添加查询条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34527970/