使用mysql在python中的while循环中进行SELECT

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用mysql在python中的while循环中进行SELECT相关的知识,希望对你有一定的参考价值。

我试图通过使用SELECT MAX(id)的查询在MySQL数据库中找到最新的条目。我已经获得了最新的id,所以我知道查询有效,但现在我想在while循环中使用它,所以我每次迭代都会得到最新的条目。

这是我到目前为止:

import pymysql

con = pymysql.connect(host='.....', user='.....',
                      password='.....', database='.....')

cur = con.cursor()

while True:
    query = "SELECT MAX(id) FROM reports"
    cur.execute(query)
    data = cur.fetchall()
    last = (data[0][0])
    print(last)

问题是我在更新数据库后不断获得相同的结果。例如,现在我有45个条目,所以我的脚本在while循环中打印'45'。但是在我向表中添加另一行之后,它会继续打印'45'而不是我期望的'46'。当我停止脚本并再次运行它时,它将打印'46'并在我添加另一行后继续打印。

大约两周前我才开始使用MySQL,所以我对它没有那么多的了解。我觉得我在这里错过了一些非常小的东西。我该怎么办?任何帮助将不胜感激。

答案

我有同样的问题,只是想让其他任何人都清楚地寻找解决方案。

将autocommit设置为True解决了我的问题,并且在每次查询后都不需要调用提交。

import pymysql

con = pymysql.connect(host='.....', user='.....',
                  password='.....', database='.....')
con.autocommit = True
cur = con.cursor()

while True:
    query = "SELECT MAX(id) FROM reports"
    cur.execute(query)
    data = cur.fetchall()
    last = (data[0][0])
    print(last)

Here is a link to the documentation

以上是关于使用mysql在python中的while循环中进行SELECT的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中的另一个 while 循环中正确地创建一个 while 循环?

MySQL 中的 While 循环使用连接和子查询选择数据

一文了解Python中的循环(for while break continue 嵌套循环...)

如何在 Python 中使用 while 循环计算列表中的字符串?

为啥我的 while 循环中的条件在 python 中不起作用?

MySQL中的while循环和repeat循环的区别