码迷,mamicode.com
首页 > 其他好文 > 详细

with与上下文管理器

时间:2018-04-26 18:29:01      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:etc   使用   password   连接数   div   init   cut   .sql   class   

使用上下文管理器, 提取与mysql数据库连接的方法:

减少了每次连接数据库的代码量.

原代码:

 1 import pymysql
 2 
 3 conn = pymysql.connect(host="localhost", port=3306, database="datas_database", user="root", password="mysql",charset="utf8") 
 4                          
 5 cur = conn.cursor()
 6 
 7 sql = """select * from datas;"""
 8 cur.execute(sql)
 9 content = cur.fetchall()
10 
11 # 需要进行的操作:关闭数据库连接
12 cur.close()
13 conn.close()
14 
15 for temp in content:
16     print(temp)

 

提取之后:

 1 import pymysql
 2 
 3 class ExecuteSql(object):
 4     def __init__(self,database,sql):
 5         self.conn = pymysql.connect(host="localhost", port=3306, database=database, user="root", password="mysql",
 6                                   charset="utf8")
 7         self.cur = self.conn.cursor()
 8         self.sql = sql
 9 
10     def __enter__(self):
11         self.cur.execute(self.sql)
12         return self.conn, self.cur
13 
14     def __exit__(self, exc_type, exc_val, exc_tb):
15         self.cur.close()
16         self.conn.close()
17 
18 # 传入数据库名字和sql语句, 不用重复写创建连接的代码,直接操作数据库,减少一些代码量
19 database = "datas_database"
20 sql = """select * from datas;"""
21 
22 with ExecuteSql(database, sql) as e:
23     conn, cur = e
24     for temp in cur.fetchall():
25         print(temp)
26     # conn.commit()   # 如果执行修改语句, 需要提交一下.

 

with与上下文管理器

标签:etc   使用   password   连接数   div   init   cut   .sql   class   

原文地址:https://www.cnblogs.com/12plus12/p/8953807.html

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