Nir*_*ran 3 python firebird sqlalchemy
我将Firebird数据库和SQLAlchemy用作ORM包装器。
我知道通过使用in_它可以传递子句中的sales_id列表IN并获得结果。
我有一个用例,其中必须使用文本sql。
这是我的摘录,
conn.execute('select * from sellers where salesid in (:sales_id)', sales_id=[1, 2, 3] ).fetchall()
Run Code Online (Sandbox Code Playgroud)
这总是抛出 token unknown error
我需要做的就是传递sales_id([1, 2, 3])列表以绑定参数(:sales_id)并获取结果集。
如果使用的DB-API驱动程序不提供对元组和列表的特殊处理以生成行构造函数和IN谓词的表达式,则可以使用由bindparam以下提供的“扩展”功能:
stmt = text('select * from sellers where salesid in :sales_id')
stmt = stmt.bindparams(bindparam('sales_id', expanding=True))
conn.execute(stmt, sales_id=[1, 2, 3]).fetchall()
Run Code Online (Sandbox Code Playgroud)
这将sales_id在每个查询的基础上用所需的占位符替换占位符,以适应用作参数的序列。