Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLAlchemy向查询添加条件_Python_Mysql_Flask_Sqlalchemy - Fatal编程技术网

Python SQLAlchemy向查询添加条件

Python SQLAlchemy向查询添加条件,python,mysql,flask,sqlalchemy,Python,Mysql,Flask,Sqlalchemy,原始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) 但它返回的运算符“get

原始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)
但它返回的
运算符“getitem”在此表达式上不受支持

如何在不接触模型的情况下将此条件添加到ORM查询中

或者如何在查询参数中添加原始sql语句

PS:我不希望对模型进行任何更改。

您需要使用:


但是我不确定
substr(?,1,8)
的长度通常是6(就像
STRING
)原始字符串的长度是8,这是我的错误。太好了,谢谢!
from sqlalchemy import func

q = db_session.query(
    func.IF(func.substr(Table.order_id, 1, 8) == 'STRING', Table1.name, Table2.type)
)