为什么 Python 循环中的后续查询会从 MySQL 数据库返回相同的数据?

Susan Sarandon
发布: 2024-11-06 07:56:03
原创
820 人浏览过

Why Do Subsequent Queries in a Python Loop Return the Same Data from a MySQL Database?

使用 Python 查询从 MySQL 检索动态数据

当从 Python 定期查询快速变化的 MySQL 数据库时,您可能期望基于循环的一致获取最新数据的方法。但是,您可能会遇到重复返回相同数据的情况。

此问题源于 MySQL 的默认隔离级别 REPEATABLE READ。在此级别下,事务内的读取将使用事务开始时存在的数据快照。同一事务中的后续查询将从该快照中读取而不是更新它。

要解决此问题,您需要在每次查询后提交连接,以确保下一个事务将检索最新数据。以下是修改 Python 代码的方法:

<code class="python"># Main loop
while True:

    # SQL query
    sql = "SELECT * FROM table"

    # Read the database, store as a dictionary
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)

    # Store data in rows
    myresult = mycursor.fetchall()

    # Transfer data into list
    for row in myresult:
        myList[int(row["rowID"])] = (row["a"], row["b"], row["c"])

        print(myList[int(row["rowID"])])

    # Commit !
    mydb.commit()
    print("---")
    sleep (0.1)</code>
登录后复制

通过在每个查询后添加 mydb.commit(),您可以强制 MySQL 提交事务并更新快照。这允许后续查询访问最新的数据。

以上是为什么 Python 循环中的后续查询会从 MySQL 数据库返回相同的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!