【问题标题】:python MySQLdb: hook function to check connectivitypython MySQLdb:检查连接性的钩子函数
【发布时间】:2011-11-16 12:09:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: python exception-handling hook mysql-python


    【解决方案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'
    

    【讨论】:

    • 太棒了。这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2016-10-30
    • 2012-11-04
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多