mysql = pymysql.connect(host='localhost', port=3306,
user=user, passwd=passwd, db=db, charset='utf8')
try:
while True:
with mysql.cursor() as cursor:
cursor.execute("SELECT `data` FROM `tbl`")
rows = cursor.fetchall()
print(rows)
print('Selected %d rows' % len(rows))
# ... work with rows
time.sleep(10)
finally:
mysql.close()
假设在此代码开始时表中有0行。然后,已经在这个过程中,我在外面(phpmyadmin)添加几行。但是这段代码仍然打印出没有新行(选中0)。但是如果连接和关闭位于循环内(每次迭代都将重新连接),select将返回一个新行。
为什么?如何在单个连接中修复pymysql看到的所有更改?
答案 0 :(得分:0)
我有同样的问题。如果在连接参数中包含autocommit=True
,则查询结果将是新的,而不是看似缓存的结果。这比每个查询的打开和关闭更优雅。
mysql = pymysql.connect(host='localhost', port=3306,
user=user, passwd=passwd, db=db, charset='utf8', autocommit=True)