如何等待MySQLdb游标执行所有查询完成

4 投票
2 回答
11450 浏览
提问于 2025-04-16 11:31

我正在尝试运行以下代码:

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 代码块,并提供你遇到的完整错误信息,如果情况不是这样的话。

撰写回答