使用sqlalchemy批量删除问题
Bulk delete issue using sqlalchemy
我正在尝试使用以下代码根据 ID 列表从 Microsoft Azure 中的 SQL Server 2016 数据库中删除大量记录(最多 10,000 条)。
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
我觉得这一定是一个常见问题,一定有更好的方法来做到这一点,可能是通过使用分块方法延迟后续执行语句或完全使用不同的方法。我对 sqlalchemy 很陌生。任何帮助将不胜感激。
我似乎已经通过遍历分块 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 无法删除 10,000 条记录。 table不大
我正在尝试使用以下代码根据 ID 列表从 Microsoft Azure 中的 SQL Server 2016 数据库中删除大量记录(最多 10,000 条)。
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
我觉得这一定是一个常见问题,一定有更好的方法来做到这一点,可能是通过使用分块方法延迟后续执行语句或完全使用不同的方法。我对 sqlalchemy 很陌生。任何帮助将不胜感激。
我似乎已经通过遍历分块 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 无法删除 10,000 条记录。 table不大