0

다음 코드를 사용하여 ID 목록을 기반으로 Microsoft Azure의 SQL Server 2016 DB에서 많은 수의 레코드 (최대 10,000 개)를 삭제하려고합니다.sqlalchemy를 사용하여 대량 삭제 문제

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

나는 2000 덩어리 만에 ID리스트를 청크 시도 얻을

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

는 두 번째 덩어리를 삭제하려고 다음과 같은 오류가 나는 이것이 일반적인 문제이어야 느낌과 지연에 의해 아마이 할 수있는 더 좋은 방법이 있어야합니다 그 다음에 chunking 메소드를 사용하여 명령문을 실행하거나 다른 메소드를 모두 사용하십시오. 나는 꽤 sqlalchemy에 새로운 사람이다. 어떤 도움이라도 대단히 감사 할 것입니다.

답변

0

나는 연결형 실행을 청크 분할 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) 

마이크로 소프트 애저 10,000 레코드를 삭제에 문제가있을 것입니다 놀라게있다. 테이블은 크지 않습니다.