Python MySQLdb пустой запрос выбора, хотя ручное выполнение запроса дает результаты

Я написал демон python, который непрерывно опрашивает базу данных mysql. Он отлично работает, когда я постоянно подключаюсь и повторно подключаюсь к базе данных между запросами следующим образом:

def connect(self):
    self.connection = MySQLdb.connect(...)  
    self.cursor = self.connection.cursor()  
    return self.cursor

def disconnect(self): ...
    self.cursor.close()
    self.connection.close()

def getData(); ....
   sqlcmd = """SELECT ...."""
   self.cursor.execute (sqlcmd % (params))
   result =  self.cursor.fetchall()
   return result

if __name__ == "__main__":
    db = prepaid_db.Database()
    while 1:
        dbConnection = db.connect()
        data = db.getData()
        ... do stuff
        db.disconnect

Но когда я пытаюсь сохранить соединение с базой данных открытым (как показано ниже), я получаю пустой запрос, хотя во время его работы я могу запросить db вручную, задайте ему тот же запрос и получите ожидаемый результат.

if __name__ == "__main__":
    db = prepaid_db.Database()
    dbConnection = db.connect()
    while 1:
        data = db.getData()
        ... do stuff
    db.disconnect

Я перепробовал все, чтобы понять, почему он делает это:

  • отключил кеш запросов и добавил случайные x = x в запрос на случай, если кеш mysql был сбит с толку схожими запросами
  • включил ведение журнала запросов mysql: запрос проходит, но по-прежнему возвращает пустой набор
  • перемещенный cursor.connect в database.connect и обратно в getData (), без разницы

Мне бы хотелось узнать, чего я не понимаю.

7
задан Michael Franze 13 October 2011 в 10:32
поделиться