【Python学习篇】Python_Mysql使用上下文管理器对数据库连接进行管理

with语句可以实现任何try/finally语句实现的功能,而且代码更加清晰简洁。因此,我们也可以对数据库的操作进行封装,封装完成以后,可以使用with语句保证数据库连接无论在什么情况下都会关闭。
为了在with语句中管理数据库连接,我们需要实现上下文管理器。有两种方法实现上下文管理器,我们选择比较简单的contextmanager。使用contextmanager装饰器需要从标准库的contextlib模块中进行导入。实现上下文管理器以后,创建连接的函数如下:


from contextlib import contextmanager
        @contextmanager
        def get_conn(**kwargs):
            conn = db.connect(host=kwargs.get('host', 'localhost'),
                                  user=kwargs.get('user'),
                                  passwd=kwargs.get('passwd'),
                                  port=kwargs.get('port', 3306),
                                  db=kwargs.get('db'))
            try:
                  yield conn
              finally:
                  if conn:
                      conn.close()
                      

对创建数据库连接的函数进行封装以后,可以使用with语句管理数据库连接,使得代码更加清晰,且不容易出错。如下所示:

    conn_args = dict(host='127.0.0.1', ......)
    with get_conn(**conn_args) as conn:
        with conn as cur:
            cur.execute("select * from student")
            ......

来源:《Python Linux系统管理与自动化运维》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C-Jonn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值