上下文管理器
任何实现了 __enter__() 和 __exit__() 方法的对象都可称之为上下文管理器,上下文管理器对象可以使用 with 关键字。
以创建京东数据库连接为例:
from pymysql import *
class DB(object):
# 初始化连接
def __init__(self, databasename, password):
# 1. 连接数据
# 创建Connection连接
self.conn = connect(host='localhost', port=3306, database=str(databasename), user='root',
password=str(password), charset='utf8')
# 获得Cursor对象
self.cs1 = self.conn.cursor()
# 返回cs1游标
def __enter__(self):
return self.cs1;
# 关闭连接,游标
def __exit__(self, exc_type, exc_val, exc_tb):
self.cs1.close()
self.conn.close()
# 创建好上下文管理器,使用with获取数据库数据
with DB("jing_dong", "mysql") as db:
db.execute("select * from goods_brands; ")
content = db.fetchall()
print(content)