0

您好我有一个连接到 Amazon RDS 机器并检查新条目的 python 脚本。我的脚本完美地在本地主机上运行。但在 RDS 上,它没有检测到新条目。一旦我取消脚本并再次运行,我就会得到新条目。为了测试,我像这样尝试了

cont = MySQLdb.connect("localhost","root","password","DB") 
cursor = cont.cursor() 
for i in range(0, 100):
    cursor.execute("Select count(*) from box")
    A = cursor.fetchone()
    print A 

在这个过程中,当我添加一个新条目时,它不会检测到新条目,但是当我关闭连接并再次运行它时,我得到了新条目。为什么这是我检查了它在 0 的缓存。我还缺少什么。

4

2 回答 2

0

我在 MySQL 命令行客户端中也看到过这种情况。

我的理解(来自链接到此 URL 的其他人)是 Python 的 API 经常默默地创建事务: http: //www.python.org/dev/peps/pep-0249/

如果这是真的,那么您的光标正在查看数据的一致版本,即使在另一个事务添加了行之后也是如此。您可以尝试cursor.rollback()for循环中执行 a 来停止正在运行的隐式事务SELECT

于 2011-05-23T16:30:19.093 回答
0

我得到了解决方案,这是由于 Mysql 中的隔离级别,我所要做的就是

Set the default transaction isolation level transaction-isolation = READ-COMMITTED

我为此使用 Django 我必须在 django 数据库设置中添加它

'OPTIONS': {
                "init_command": "SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED"
                }
于 2011-06-24T07:37:37.350 回答