Иногда таблица базы данных обновляется (другой программой).
Первый запрос SELECT извлекает правильные данные, но дальнейшие вызовы в цикле возвращают первые значения.
Как я могу получить актуальные данные?
Единственное обходное решение, которое я нашел до сих пор, — это повторное подключение к БД на каждой итерации! В моем примере раскомментирование ОБА комментариев #1# и #2#. Раскомментировать только #2# недостаточно (т. е. курсор воссоздается), результаты все равно кэшируются.
Вот рабочий пример, который выдает ошибку.
Код: Выделить всё
import MySQLdb
from time import sleep
class DB:
def __init__(self):
self.connection = MySQLdb.connect(mysql_host, mysql_user, mysql_pass, mysql_db)
self.cursor = self.connection.cursor()
def get(self):
sql = ''' SELECT id, message FROM mps_messages
WHERE topic=%s ORDER BY id LIMIT 1 '''
#1# self.connect()
#2# self.cursor = self.connection.cursor()
self.cursor.execute(sql, ("topic",) )
rec = self.cursor.fetchone()
print rec
def loop(self):
while True:
self.get()
sleep(4)
db=DB()
db.loop()
- ОС: Ubuntu,
- Python: 2.7.4
- mysqldb: 1.2.3
- mysql: 5.5.34
Подробнее здесь: https://stackoverflow.com/questions/236 ... ct-results