from pymysql import connect

class DB(object):
def __init__(self, password, database):
# 1.连接数据库
self.conn = connect(host='localhost', port=3306, user='root', password=str(password), database=str(database),
charset='utf8')
# 2.创建游标
self.cs = self.conn.cursor()

def __enter__(self):
return self.cs

def __exit__(self, exc_type, exc_val, exc_tb):
# 3.关闭
self.cs.close()
self.conn.close()

# 利用上下文管理器来封装的数据库的操作,只需要传入密码和需要连接的数据库就可以了
with DB("mysql", "student_selection") as db:
# 需要执行的数据库操作(sql语句)
db.execute("select * from student; ")
# 循环取出查找的数据
data = db.fetchall()
for content in data:
print(content)

python中利用上下文管理器来实现mysql数据库的封装的更多相关文章

  1. (转)Python中的上下文管理器和Tornado对其的巧妙应用

    原文:https://www.binss.me/blog/the-context-manager-of-python-and-the-applications-in-tornado/ 上下文是什么? ...

  2. Python中的上下文管理器和with语句

    Python2.5之后引入了上下文管理器(context manager),算是Python的黑魔法之一,它用于规定某个对象的使用范围.本文是针对于该功能的思考总结. 为什么需要上下文管理器? 首先, ...

  3. 深入理解 Python 中的上下文管理器

    提示:前面的内容较为基础,重点知识在后半段. with 这个关键字,对于每一学习Python的人,都不会陌生. 操作文本对象的时候,几乎所有的人都会让我们要用 with open ,这就是一个上下文管 ...

  4. python中实现上下文管理器的两种方法

    上下文管理器: python中实现了__enter__和__exit__方法的对象就可以称之为上下文管理器 实现方法一举例: def File(object): def __init__(self, ...

  5. Python中的上下文管理器(contextlib模块)

    上下文管理器的任务是:代码块执行前准备,代码块执行后收拾 1 如何使用上下文管理器: 打开一个文件,并写入"hello world" filename="my.txt&q ...

  6. python中的上下文管理器

    刚刚看了vamei大神的上下文管理器博客,理解如下: 其实我自己经常用到上下文管理器,尤其是在打开文件的时候,如果自己比较懒,不想手工打上f.close(),使用上下文管理器就ok拉. 上下文管理器就 ...

  7. Python中利用函数装饰器实现备忘功能

    Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   " ...

  8. Python深入02 上下文管理器

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 上下文管理器(context manager)是Python2.5开始支持的一种语 ...

  9. 【Python】【上下文管理器】

    """#[备注]#1⃣️try :仅当try块中没有异常抛出时才运行else块.#2⃣️for:仅当for循环运行完毕(即for循环没有被break语句终止)才运行els ...

随机推荐

  1. linux查看日志

    若想在linux下查询某个时间段的log,用sed命令示例如下: $ sed -n '/2017-11-11 11:00:00/,/2017-11-11 11:11:11/p'  error.log ...

  2. spring boot 笔记1

    demon 目录,公共配置 SbMybatisApplication.java package com.example.sb_mybatis; import org.mybatis.spring.an ...

  3. cartographer 分析

    原文链接:http://blog.csdn.net/zyh821351004/article/details/52421005 cartographer与karto的比较 1. 两者采取的都是图优化框 ...

  4. P4553 80人环游世界

    题目地址:P4553 80人环游世界 上下界网络流 无源汇上下界可行流 给定 \(n\) 个点, \(m\) 条边的网络,求一个可行解,使得边 \((u,v)\) 的流量介于 \([B(u,v),C( ...

  5. Linux内存带宽的一些测试笔记【转】

    转自:https://blog.csdn.net/subfate/article/details/40343497 版权声明:本文为迟思堂主人李迟原创文章,版权所有.可随便任意使用(包括学习研究商用) ...

  6. CPU 利用率背后的真相,只有 1% 人知道【转】

    导读:本文翻译自 Brendan Gregg 去年的一篇博客文章 “CPU Utilization is Wrong”,从标题就能想到这篇文章将会引起争议.文章一上来就说,我们“人人皆用.处处使用,每 ...

  7. $.each() 与 $(selector).each()的区别

    $.each( dataArr,function(i,item){}) 可用于遍历任何的集合(无论是数组或对象).  如果是数组,回调函数每次传入数组的索引(也就是i)和对应的值(item)(值亦可以 ...

  8. (常用)xml-pickle-shevel-json模块

    json,pickle模块        1. 什么是序列化            序列化指的是将内存中的数据类型转换成一种中间格式,该格式可以用来存到硬盘中或者基于网络传输         2. 为 ...

  9. 【原创】Linux基础之windows linux双系统

    1 下载iso opensuse 下载: http://download.opensuse.org/distribution/openSUSE-stable/iso/openSUSE-Leap-15. ...

  10. Tp5自定义标签

    'taglib_build_in'    => 'cx,tags', // 内置标签库名称(标签使用不必指定标签库名称),以逗号分隔 注意解析顺序 <?php namespace thin ...