在循环中获取相同的值而不更新或获取新值



我在应用程序中添加了一个余额,它应该被提取,但它只提取旧值并保持不变,它不提取最后添加的值,这是使用应用程序添加的,而这段代码在循环中的树莓皮上运行

import mysql.connector
fetdb = mysql.connector.connect(
host="hostname",
user="user",
password="password",
database="databasename",
)
while True:
fetcursor = fetdb.cursor()
fetsql = "select gasBalance from users WHERE meterID = 10007"
fetcursor.execute(fetsql)
fetresult = fetcursor.fetchone()
i = "".join(str(x) for x in fetresult)
fetbalance = int(i)
print(fetbalance)

这听起来像是一个事务问题,即使表发生更改,数据库连接也可以查看数据库的旧状态。

最简单的解决方法可能是重构事物,为每个请求建立一个新的连接(就像网络应用程序一样(:

import mysql.connector
import time

def get_balance(meter_id):
with mysql.connector.connect(
host="hostname",
user="user",
password="password",
database="databasename",
) as conn:
cursor = conn.cursor()
cursor.execute(
"select gasBalance from users WHERE meterID = %s", [meter_id]
)
row = cursor.fetchone()
return row[0]
while True:
fetbalance = get_balance(10007)
print(fetbalance)
time.sleep(1)

最新更新