python MySQLdb: подключаемая функция для проверки подключения - PullRequest
0 голосов
/ 16 ноября 2011

У меня есть скрипт Python, который глобально вызывает объект соединения с базой данных с MySQL. Существует функция вставки insertToTable(actionDate, action), которая вставляет запись в таблицу. Основной раздел скрипта внутри if __name__=="__main__": работает как бесконечный цикл while для часов / дней.

Проблема в том, что объект соединения mysql может не использоваться в течение многих часов, что приводит к истечению времени ожидания соединения сервером MySQL. В настоящее время я использую try & except внутри функции, чтобы перехватить исключение. Однако это приводит к повторению кода, так как мне приходится включать блок try & Кроме того, чтобы обрабатывать эту ошибку в каждой функции.

Я хотел бы знать, существует ли в python механизм, с помощью которого я могу подключить insertToTable() к другой функции, скажем, checkConnectivity(). Когда вызывается insertToTable(), сначала выполняется checkConnectivity(), а затем продолжается insertToTable().

1 Ответ

1 голос
/ 16 ноября 2011

Вы можете создать декоратор, который вызывает функцию checkConnectivity.Пример:

def checkConnectivity():
    print 'Checking connection'

def CheckConnectionDecorator(fn):
    def new(*args, **kwargs):
        checkConnectivity()
        return fn(*args, **kwargs)
    return new

@CheckConnectionDecorator
def insertToTable():
    print 'Insertion'

@CheckConnectionDecorator
def anotherQueryFunction():
    print 'Another query'
...