PyMySQL 在循环 returns 中选择数据不是所有记录
PyMySQL selecting data in loop returns not all records
我遇到 PyMySQL 数据问题 selection in loop。
- xxx table 包含一条记录 id = 1
我正在启动脚本
import pymysql
import time
connection = pymysql.connect(host="127.0.0.1",
port=3306,
user="yyy",
passwd="yyy",
db="yyy",
charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
while True:
with connection.cursor() as cursor:
sql = "select * from xxx"
cursor.execute(sql)
result = cursor.fetchall()
print result
time.sleep(5)
connection.close()
虽然我的脚本是 运行,但我打开 MySQLWorkbench 并将新记录插入 xxx table,等等。id = 2
- 问题:我的脚本不打印新记录它只打印 id=1。
如果我重新启动我的脚本,那么它 select 新插入的记录 id=2,但是如果我从 MySQLWorkbench 插入另一条记录,它就找不到它(除非我重新启动我的脚本)
你能解释一下如何循环检索数据库中的所有记录吗?
更新:
我通过向连接添加 autocommit=True
参数解决了问题。但是为什么我在做 select 时需要提交更改?正常吗?
But why I need to commit changes when I am doing select? Is it normal?
是的。这是正常的。你必须学习事务隔离级别。
我遇到 PyMySQL 数据问题 selection in loop。
- xxx table 包含一条记录 id = 1
我正在启动脚本
import pymysql import time connection = pymysql.connect(host="127.0.0.1", port=3306, user="yyy", passwd="yyy", db="yyy", charset='utf8', cursorclass=pymysql.cursors.DictCursor) while True: with connection.cursor() as cursor: sql = "select * from xxx" cursor.execute(sql) result = cursor.fetchall() print result time.sleep(5) connection.close()
虽然我的脚本是 运行,但我打开 MySQLWorkbench 并将新记录插入 xxx table,等等。id = 2
- 问题:我的脚本不打印新记录它只打印 id=1。
如果我重新启动我的脚本,那么它 select 新插入的记录 id=2,但是如果我从 MySQLWorkbench 插入另一条记录,它就找不到它(除非我重新启动我的脚本)
你能解释一下如何循环检索数据库中的所有记录吗?
更新:
我通过向连接添加 autocommit=True
参数解决了问题。但是为什么我在做 select 时需要提交更改?正常吗?
But why I need to commit changes when I am doing select? Is it normal?
是的。这是正常的。你必须学习事务隔离级别。