环境
我使用 Firebird 数据库和 SQLAlchemy 作为 ORM 包装器。
背景
我知道通过使用in_
可以通过sales_id
列出在IN
子句并得到结果。
我有一个必须使用的用例文本sql.
Question
这是我的片段,
conn.execute('select * from sellers where salesid in (:sales_id)', sales_id=[1, 2, 3] ).fetchall()
这总是抛出token unknown error
我所需要的只是传递列表sales_id
([1, 2, 3]
) 绑定参数 (:sales_id
) 并得到结果集。
如果使用的 DB-API 驱动程序不提供对元组和列表的特殊处理来为行构造函数生成表达式,IN
谓词,您可以使用由bindparam https://docs.sqlalchemy.org/en/13/core/sqlelement.html#sqlalchemy.sql.expression.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()
这将替换占位符sales_id
在每个查询的基础上通过所需的占位符来容纳用作参数的序列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)