我正在使用带有SQLAlchemy的Firebird数据库作为ORM包装器。
我知道通过使用android.enableJetifier=true
android.useAndroidX=true
可以在in_
子句中传递sales_id
列表并获得结果。
我有一个用例,其中必须使用文本sql 。
这是我的摘录,
IN
这总是抛出conn.execute('select * from sellers where salesid in (:sales_id)', sales_id=[1, 2, 3] ).fetchall()
我需要做的是传递token unknown error
(sales_id
)的列表以绑定参数([1, 2, 3]
)并获得结果集。
答案 0 :(得分:4)
如果使用的DB-API驱动程序不提供对元组和列表的特殊处理,无法为行构造函数和IN
谓词生成表达式,则可以使用{{3}提供的新功能“扩展” }:
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()
这将在每次查询的基础上用所需的占位符替换占位符sales_id
,以容纳用作参数的序列。