Я написал демона 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
Но когда я пытаюсь сохранить соединение с базой данных открытым (как показано ниже), я получаю пустой запрос, хотя, хотяон работает, я могу запросить базу данных вручную, дать ему тот же запрос и получить ожидаемый результат.
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 (), без разницы
Мне бы хотелось понять, что я не понимаю.