MySQL에서 저장 프로시저와 인터페이스할 때 Python에서 "명령이 동기화되지 않음" 오류 해결
Python에서 Django를 활용하여 저장된 실행을 실행하는 동안 MySQL 프로시저에서 발생하는 일반적인 오류는 "명령이 동기화되지 않았습니다. 지금은 이 명령을 실행할 수 없습니다."입니다. 이 오류는 트랜잭션이 계속 진행 중인 상태에서 프로시저 호출 후 두 번째 명령문을 실행하려고 할 때 발생합니다.
이 문제를 해결하려면 프로시저 실행에 사용된 커서를 닫고 이전에 새 커서를 생성하는 것이 중요합니다. 후속 문 실행:
cursor.close() cursor = connection.cursor()
프로시저 호출에서 결과를 가져온 후 즉시 커서를 닫을 수 있습니다. 결과 집합은 영향을 받지 않으며 계속 액세스할 수 있습니다.
단순한 MySQL 절차를 예로 들어 보겠습니다.
delimiter $$ create procedure my_mysql_procedure(p_page_id int) begin select 1 from dual; end$$ delimiter ;
Python 내에서 시도할 때 "명령이 동기화되지 않았습니다"라는 오류가 발생합니다. 다음 코드에서 볼 수 있듯이 프로시저를 호출한 후 다른 문을 실행하려면:
cursor.callproc('my_mysql_procedure', [some_id,]) result = cursor.fetchall() for r in result: do something cursor.execute("select * from some_table") result = cursor.fetchall()
커서를 닫았다가 다시 엽니다. 프로시저 호출 후 오류가 제거되고 후속 문을 문제 없이 실행할 수 있습니다. 이 솔루션을 사용하면 MySQL이 올바른 명령 순서를 유지하고 후속 데이터베이스 작업을 원활하게 실행할 수 있습니다.
위 내용은 MySQL 저장 프로시저를 사용할 때 Python에서 \'명령이 동기화되지 않음\' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!