python上下文小记
2024-09-05 07:58:51
python访问数据库是日常编程中经常使用的,一般的代码如下:
可以看出样例代码还是比较多的,有没有办法优化一下呢?有!
def send_msgs(conn_id=None, **kwargs):
conn = get_mysql_conn(conn_id)
cursor = conn.cursor()
sql_db = '''select count(1) from table)'''
cursor.execute(sql_db)
result = cursor.fetchone()
cursor.close()
conn.close()
采用python提过的上下文方式,访问数据库就可以这样写:
def send_msgs(conn_id=None, **kwargs):
with db_conn(conn) as cur:
cur.execute(sql)
r1=cur.fetchone()
缩减了一半以上的代码,而且还可以自动关闭,db_conn怎么写?就是实现下面这样一个类就可以了:
class db_conn(object): def __init__(self, conn_id):
self.conn = MySqlHook.get_connection(conn_id=conn_id).get_hook().get_conn()
self.cur = self.conn.cursor() def __enter__(self):
return self.cur def __exit__(self, exc_type, exc_value, exc_trace):
self.conn.commit()
self.cur.close()
self.conn.close()
最新文章
- android应用程序第一次启动时显示引导界面
- JavaScript变量作用域
- neutron用linux_bridge部署provider网络
- Oracle日期时间
- objective-c 条件运算符
- 【转】SVN服务器客户端以及环境的搭建和使用
- 我的第一个CUDA程序
- eclipse安装ermaster建模插件
- 1104解决ecos挂件中数组传递的相关问题。
- 记一次redis挂机导致的服务雪崩事故~不对,是故事
- 初学Python(六)——输入输出
- Linux Bash Shell字符串截取
- Java并发框架——公平性
- kafka_2.11-2.1.0测试
- combineByKey
- VIP系统
- c++沉思录 学习笔记 第五章 代理类
- Dom4j向XML中指定位置添加、删除、修改节点——(五)
- Maven启动代理访问
- [C++ Primer] : 第12章: 动态内存
热门文章
- C# Redis分布式锁的应用 - 叶子栈 - SegmentFault 思否
- C# 中使用正则表达式 Regex.Matches方法的几个应用[转]
- YoloV3 训练崩溃
- OnePlus5刷 TWRP
- JAVA语言程序设计课后习题----第六单元解析(仅供参考)
- time 时间模块的函数调用
- css 之引入自定义字体/特殊字体-----使用ttf格式语言包
- 解决No module named 'sklearn.cross_validation'
- Python3.5环境安装及使用 Speech问题解决(转)
- java 项目坑记录