MySQLdb кэширует результаты SELECT? ⇐ Python

Программы на Python
Anonymous
MySQLdb кэширует результаты SELECT?

Сообщение Anonymous »

Я выполняю запрос SELECT в цикле.

Иногда таблица базы данных обновляется (другой программой).
Первый запрос 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

Вернуться в «Python»