在while循环中执行同一个查询语句,没有参数,数据库中发生变化后,查询结果不是最新的。当查询语句中带参数时,不添加commit()也是可以准确查询的。
col, ctp_data = self.sql_ctp_db.SelectAll(ctp_sql) #结果一直不变
在下面函数中添加self.conn.commit()能解决查询结果不变的问题
def SelectAll(self, sql='', param=()):
columns = []
result = None
if None in [self.conn, self.cur]:
return columns, result
count = 0
try:
if len(param) < 1:
count = self.cur.execute(sql)
else:
count = self.cur.execute(sql, param)
if count > 0:
result = self.cur.fetchall()
else:
result = None
desc = self.cur.description
self.conn.commit()
columns = [col[0] for col in desc]
except (Exception, KeyboardInterrupt) as e:
print(e)
columns = []
return columns, result
在使用Python的pymysql库进行数据库操作时,遇到一个现象:在while循环中执行无参数的查询语句,即使数据库有变化,查询结果也不会更新。然而,如果查询语句带有参数,并且不调用commit(),也能获取到最新数据。这个问题的解决方案是在每次执行查询后调用conn.commit()来确保数据的实时同步。
3万+





