当“in”操作符中的列表很大时,SQLAlchemy更新操作不起作用

2024-09-29 19:28:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图更改列表“list_var”中ID所在行的值

    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)')

有什么办法吗


Tags: id列表sqlalchemyvarconnectwithtableconn
1条回答
网友
1楼 · 发布于 2024-09-29 19:28:18

当我将列表拆分为更小的列表时,它起了作用。 下面是代码

if(len(list_var)>1000):
     chunks = [list_var[x:x+1000] for x in range(0, len(list_var), 1000)]
     for chunk in chunks:
         query = sqlalchemy.update(Table_var).values(column_var=2).where(Table_var.columns.ID.in_(chunk))
         res = conn.execute(query)

相关问题 更多 >

    热门问题