with让数据库操作代码变得清爽


对数据操通常都需要打开与关闭连接,而且用try-finally保证连接被关闭. 这些常规的操作会让代码变得难看.

db = web.database(dbn='oracle', db='......', user='hy', pw='1234')
try:
    db.query("select * from t_c_ms_interface")
finally:
    db.ctx.db.close()

用上下文协议隐藏这些操作

class IPCCCDB:
    def __init__(self):
        self.dns = '....'

    def __enter__(self):
        import web
        self.db = web.database(dbn='oracle', db=self.dns, user='hy', pw='1234')
        return self.db

    def __exit__(self, type, value, traceback):
        self.db.ctx.db.close()

然后,变得如此清爽

with IPCCCDB() as db:
    db.query("select * from t_c_ms_interface")


上篇: python排列*号 下篇: 让远程机器执行命令的便捷方式