2011-02-09 3 views
0

를 실행 때까지 기다리 방법 :MySQLdb 커서 마무리는 내가 다음 코드를 실행하려고 모든 쿼리

with open('file.sql') as sqlFile: 
    sql = sqlFile.read() 
    cursor.execute(sql) 

file.sql는 DB를 초기화 일부 SQL 쿼리를 포함하고 있습니다.

그러나이 코드는 모든 쿼리가 진행되기 전에 작업을 마칩니다. 이 스크립트가 끝난 후 몇 초 안에 진행됩니다.

모든 쿼리가 진행될 때까지 어떻게 대기 할 수 있습니까?

+0

다음 코드 줄은 초기화 된 DB를 사용하는 응용 프로그램을 시작하지만 응용 프로그램이 시작될 때 DB가 완전히 초기화되지 않기 때문에 오류가 발생합니다. –

답변

1

이미 그렇습니다.

execute() 명령은 스크립트에서 다음 코드 행으로 넘어 가기 전에 명령이 완전히 실행될 때까지 대기합니다.

즉, cursor.execute()이 실행되기 전에 코드가 계속 실행되지 않습니다.이 실행됩니다.

귀하의 가정이 잘못되었습니다. 나는 당신이 SQL 실행에 오류가 있다고 가정하고, SQL을 건너 뛴다.

일반적으로 cursor.execute()은 여러 개의 SQL 문을 실행할 수 없으므로 파일을 여러 개의 명령문으로 분할하고 각 문마다 하나씩 cursor.execute()을 여러 번 호출해야합니다.

위의 코드에서 오류를 숨기고있는 모든 try/except 절을 제거하고 그렇지 않은 경우 완전히 오류 추적을 제공하십시오.

+0

기다려야합니다. 그러나 그렇지 않습니다. 나는 다음과 같은 구조가 있다면 기다리지 않는 어딘가를 읽었다 : 'SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";' –

관련 문제