python MySQLdb:用于检查连接的钩子函数

时间:2011-11-16 12:09:34

标签: python exception-handling hook mysql-python

我有一个python脚本,它全局调用mySQL的数据库连接对象。有一个插入函数insertToTable(actionDate, action),它将记录插入表中。 if __name__=="__main__":内部脚本的主要部分作为无限while循环运行数小时/天。

问题是,mysql连接对象可能会在几个小时内未使用,这会导致MySQL服务器超时连接。我目前使用try&函数内的except来捕获异常。然而,这导致代码重复,因为我必须包括try&除了阻止在每个函数中处理此错误。

我想知道python中是否有一种机制可以将insertToTable()挂钩到另一个函数,比如checkConnectivity()。调用insertToTable()时,将执行第一个checkConnectivity(),然后继续执行insertToTable()

1 个答案:

答案 0 :(得分:1)

您可以创建一个调用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'