gpt4 book ai didi

python - PyMySQL 返回旧/快照值/不重新运行查询?

转载 作者:IT王子 更新时间:2023-10-29 00:33:06 25 4
gpt4 key购买 nike

我正在使用 pymysql.cursors 和一个从表中加载一行并每秒打印一次的简化代码示例是:

#!/usr/bin/env python3
import pymysql.cursors
import time

conn = pymysql.connect(host='localhost',
# credentials etc.
cursorclass=pymysql.cursors.DictCursor)

while True:
with conn.cursor() as cursor:
cursor.execute("SELECT * FROM state limit 1;")
vals = cursor.fetchone()
print (vals)
time.sleep(1)

state 是 MariaDb 数据库中具有单行的表。

现在,如果我启动 MySQL 客户端并更改表的内容,则该脚本正在运行时,此脚本会愉快地不断抽出原始值;即它显然没有咨询数据库(!)。

我是 Python 新手,而且我绝对是 PyMySQL 新手,所以如果这是一个愚蠢的问题,那么 apols 但我有 RTM有点,只是看起来很奇怪。

最佳答案

我不明白为什么这是必要的,但你可以通过任何一种方式解决它

  1. autocommit=True 添加到 connect() 参数中。

  2. cursor.execute() 命令之后调用 conn.commit()

它似乎在默认情况下以快照或其他方式启动事务。我(紧张地!)提交了一份 issue在 pymysql repo 上,因为我在这里没有听到任何消息。立即关闭并附上解释

It's repeatable read

如果有人知道比使用 autocommit 更好的方法,请告诉我。

关于python - PyMySQL 返回旧/快照值/不重新运行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33569457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com