Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用sqlalchemy批量删除问题_Python_Sql Server_Python 3.x_Sqlalchemy_Azure Sql Database - Fatal编程技术网

Python 使用sqlalchemy批量删除问题

Python 使用sqlalchemy批量删除问题,python,sql-server,python-3.x,sqlalchemy,azure-sql-database,Python,Sql Server,Python 3.x,Sqlalchemy,Azure Sql Database,我正在尝试使用以下代码,根据ID列表,从Microsoft Azure中的SQL Server 2016 DB中删除大量记录(最多10000条) del_bool = Users.columns.ID.in_(idlist) stmt_delete = Users.delete().where(del_bool) results_proxy = connection.execute(stmt_delete) 当我有少量的ID

我正在尝试使用以下代码,根据ID列表,从Microsoft Azure中的SQL Server 2016 DB中删除大量记录(最多10000条)

del_bool = Users.columns.ID.in_(idlist)
stmt_delete = Users.delete().where(del_bool)
results_proxy = connection.execute(stmt_delete)
当我有少量的ID<2000时,这可以正常工作,但当它超过4000时,我会得到以下错误:

sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('07002', '[07002] [Microsoft][ODBC Driver 13 for SQL Server]COUNT field incorrect or syntax error (0) (SQLExecDirectW)')
我尝试将ID列表分为2000个块,但在尝试删除第二个块时出现以下错误

sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('HY000', '[HY000] [Microsoft][ODBC Driver 13 for SQL Server]Connection is busy with results for another command

我觉得这一定是一个常见的问题,必须有更好的方法来做到这一点,可能是使用chunking方法延迟后续的execute语句,或者完全使用不同的方法。我对炼金术很陌生。任何帮助都将不胜感激。

我似乎已经通过循环使用分块ID列表并使用无连接执行解决了这个问题

for del_chunk in delete_chunks:
    del_bool = Users.columns.ID.in_(del_chunk)
    stmt_delete = Users.delete().where(del_bool)
    results_proxy = engine.execute(stmt_delete)

令人惊讶的是,Microsoft Azure在删除10000条记录时会遇到问题。这个表不大。

我似乎已经解决了这个问题,通过循环使用分块ID列表并使用无连接执行

for del_chunk in delete_chunks:
    del_bool = Users.columns.ID.in_(del_chunk)
    stmt_delete = Users.delete().where(del_bool)
    results_proxy = engine.execute(stmt_delete)
令人惊讶的是,Microsoft Azure在删除10000条记录时会遇到问题。这张桌子不大