【发布时间】:2020-06-14 14:44:54
【问题描述】:
我正在尝试更改 ID 在列表“list_var”中的行的值
conn = sqlengine.connect()
metadata = sqlalchemy.MetaData()
Table_var= sqlalchemy.Table('Table1',metadata, autoload_with = sqlengine)
query = sqlalchemy.update(Table_var).values(column_var=2).where(Table_var.columns.ID.in_(list_var))
res = conn.execute(query)
当 list_var 的长度很小时,上面的代码工作得很好,但是当长度很大时,它会给出以下错误。
DBAPIError: (pyodbc.Error) ('07002', '[07002] [Microsoft][SQL Server Native Client 11.0]COUNT field incorrect or syntax error (0) (SQLExecDirectW)')
有什么解决办法吗?
【问题讨论】:
-
如果我没记错的话,由于实现细节,mssql 将占位符的数量限制为数千个(可能与 SP 参数计数有关,即 2100)。创建和使用临时表或 TVP(大多数 Python 驱动程序不支持)。
-
既然您要求 any 解决方法:将 list_var 分成两半并分别执行两半?
标签: python sql sql-server python-3.x sqlalchemy