首页  >  文章  >  数据库  >  为什么 Python 中重复的 MySQL 查询返回相同的结果?

为什么 Python 中重复的 MySQL 查询返回相同的结果?

Patricia Arquette
Patricia Arquette原创
2024-11-08 21:10:02213浏览

Why Do Repeated MySQL Queries in Python Return Identical Results?

Python 中重复 MySQL 查询的持久数据检索

在 Python 脚本编写中,频繁查询 MySQL 数据库以捕获动态数据至关重要。当依靠循环来检索此类数据时,发现后续提取返回相同的结果可能会令人困惑。

问题

在给定的 Python 脚本中,循环用于重复执行 MySQL查询并将结果存储在列表中:

<code class="python">for i in range(listSize):
    # ...
    # SQL query
    sql = "SELECT * FROM table"
    # ...</code>

尽管预期循环会在每次迭代时刷新从数据库检索的数据,但脚本会重复检索相同的结果。

解决方案

问题的症结在于MySQL的事务隔离级别。默认情况下,MySQL 使用的存储引擎 InnoDB 在 READ COMMITTED 隔离级别下运行,这可确保以下内容:

“同一事务内的一致性读取会读取第一次读取建立的快照。”

这意味着事务中的后续查询将检索事务启动时存在的数据。为了解决这个问题,循环的每次迭代都必须以 mydb.commit() 命令结束。

<code class="python">import ...
# ...
while True:
    # ...
    # SQL query
    sql = "SELECT * FROM table"
    # ...
    mydb.commit()</code>

通过提交连接,脚本强制数据库捕获事务期间所做的更改,确保后续查询反映了数据库的当前状态。

说明

MySQL 连接中的每个循环迭代都被视为一个单独的事务,默认情况下从一致的快照读取。在每次迭代结束时提交连接可确保后续事务读取最新的快照,反映前一个事务中所做的更改。

以上是为什么 Python 中重复的 MySQL 查询返回相同的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn