Python上下文管理器的使用
2020-12-13 05:45
标签:实例化 std ict 管理 into mit nbsp turn ase 上下文管理器可以控制代码块执行前的准备动作,以及执行后的清理动作。 创建一个上下文管理器类的步骤: 例子1: 运行结果: 例子2:操作MySql数据库 Python上下文管理器的使用 标签:实例化 std ict 管理 into mit nbsp turn ase 原文地址:https://www.cnblogs.com/gdjlc/p/11148605.html
(1)一个__init__方法,来完成初始化(可选)
(2)一个__enter__方法,来完成所有建立工作
(3)一个__exit__方法,来完成所有清理工作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(‘主要内容‘)
实例化
进入
主要内容
退出
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))