码迷,mamicode.com
首页 > 编程语言 > 详细

Python上下文管理器的使用

时间:2019-07-08 00:05:05      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:实例化   std   ict   管理   into   mit   nbsp   turn   ase   

上下文管理器可以控制代码块执行前的准备动作,以及执行后的清理动作。

创建一个上下文管理器类的步骤:
(1)一个__init__方法,来完成初始化(可选)
(2)一个__enter__方法,来完成所有建立工作
(3)一个__exit__方法,来完成所有清理工作

例子1:

class User():
    def __init__(self):
        print(实例化)

    def __enter__(self):
        print(进入)

    def __exit__(self, exc_type, exc_val, exc_trace):
        print(退出)

obj = User()
with obj:
    print(主要内容)

运行结果:

实例化
进入
主要内容
退出

例子2:操作MySql数据库

import mysql.connector

class UseDatabase:
    def __init__(self, config:dict) -> None:
        self.configuration = config

    def __enter__(self) -> cursor:
        self.conn = mysql.connector.connect(**self.configuration)
        self.cursor = self.conn.cursor()
        return self.cursor

    def __exit__(self, exc_ype, exc_value, exc_trace) -> None:
        self.conn.commit()
        self.cursor.close()
        self.conn.close()



dbconfig = {host:127.0.0.1,
            user:root,
            password:‘‘,
            database:testdb,}

with UseDatabase(dbconfig) as cursor:
    _SQL = """insert into user(name,age)
        values(%s,%s)"""
    cursor.execute(_SQL, (张三,22))

 

Python上下文管理器的使用

标签:实例化   std   ict   管理   into   mit   nbsp   turn   ase   

原文地址:https://www.cnblogs.com/gdjlc/p/11148605.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!