如何等待MySQLdb游标执行所有查询完成
我正在尝试运行以下代码:
with open('file.sql') as sqlFile:
sql = sqlFile.read()
cursor.execute(sql)
file.sql 文件里包含了一些用来初始化数据库的 SQL 查询。
但是这段代码在所有查询完成之前就结束了。实际上,这些查询会在这个脚本结束后几秒钟才执行完。
我该怎么做才能等到所有查询都执行完再继续呢?
2 个回答
2
我也遇到过同样的问题。
我通过在 mycursor.execute
之后调用 mydb.commit()
来解决这个问题。
这样就好了。
不过,我不太确定这样做是否是正确的做法。
3
其实情况就是这样。
execute()
这个命令会等到它执行完毕后,才会继续执行你脚本中的下一行代码。
这意味着你的代码在 cursor.execute()
完成 执行之前是不会继续的。
你的想法可能有些错误。我猜测你在执行 SQL 时遇到了错误,这就是导致 SQL 被跳过的原因。
首先,cursor.execute()
通常不能一次性运行多个 SQL 语句,所以你可能需要把文件拆分成多个语句,然后分别调用 cursor.execute()
,每个语句调用一次。
请去掉所有可能隐藏错误的 try
/except
代码块,并提供你遇到的完整错误信息,如果情况不是这样的话。