【发布时间】:2021-12-05 20:56:51
【问题描述】:
出于性能原因,我使用此 SQL:
sql_tmpl = """delete from Data where id_data in (:iddata) """
params = {
'iddata':[1, 2,3 4],
}
# 'session' is a session object from SQLAlchemy
self.session.execute(text(sql_tmpl), params)
但是,我遇到了一个异常:
NotSupportedError: (NotSupportedError) ('Python type list not supported. param=1', 'HY097')
是否有一种解决方法可以让我将列表绑定到“in”子句的参数?
【问题讨论】:
-
传递给 IN 的值在 SQL 中仍然是离散的、呈现的值,因此 SQL 语句本身仍然必须形成包含单独的绑定参数。如果您使用的是文字 SQL,则需要对 ":iddata1, :iddata2, .." 等进行字符串连接。下面 Gary 的答案是正确的。
标签: python sqlalchemy