首页 > 编程语言 >Python - 上下文管理器协议

Python - 上下文管理器协议

时间:2022-11-06 22:46:09浏览次数:45  
标签:__ 管理器 Python cursor connection sql 上下文

  • with 语句的目的是简化try/finally ,即便由于异常,return,sys.exit()调用而终止,也会执行指定的操作
  • 上下文管理器协议包含__enter__和__exit__ 两个方法
  • with 语句开始执行时会在上下文管理器对象上调用__enter__方法
  • with 语句运行结构后会在上下文管理器对象上调用__exit__方法,以此扮演finally子句的角色

示例:

import pymysql.cursors

# Connect to the database
connection = pymysql.connect(host='localhost',
                             user='user',
                             password='passwd',
                             database='db',
                             cursorclass=pymysql.cursors.DictCursor)

with connection:
    with connection.cursor() as cursor:
        # Create a new record
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('[email protected]', 'very-secret'))

    # connection is not autocommit by default. So you must commit to save
    # your changes.
    connection.commit()

    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
        cursor.execute(sql, ('[email protected]',))
        result = cursor.fetchone()
        print(result)

connection 对象实现了上下文管理器协议:

cursor 对象也实现了上下文管理器协议:

标签:__,管理器,Python,cursor,connection,sql,上下文
From: https://www.cnblogs.com/czzz/p/16864451.html

相关文章

  • python中列出文件的绝对路径
     001、>>>importos>>>os.path.abspath("2.txt")##列出指定文件的绝对路径'/home/test/2.txt'>>>os.path.abspath("test1")##列出指定目录的绝对......
  • Day6:Python基础:简单购物车
    while1:Li=['手机','电脑','Ipad','无线耳机','运动鞋']forLoopinLi:print('{}\t{}'.format(Li.index(Loop)+1,Loop))Num_chioce=inpu......
  • python面试题汇总
    一基础阶段1数据类型:python数据类型:int/float/str/bool/list/tuple/set/dict可变类型(可以修改元素):list,dict,set不可变类型:int,float,bool,str,tuple2数据类......
  • 【Python】第4章-1 生成3的乘方表
    输入一个非负整数n,生成一张3的乘方表,输出3⁰~3ⁿ的值。可调用幂函数计算3的乘方。输入格式:输入在一行中给出一个非负整数n。输出格式:按照幂的递增顺序输出n+1行,每行......
  • 【Python】第3章-22 输出大写英文字母
    本题要求编写程序,顺序输出给定字符串中所出现过的大写英文字母,每个字母只输出一遍;若无大写英文字母则输出“NotFound”。输入格式:输入为一个以回车结束的字符串(少于80个......
  • python opencv 获取图像的区域
    pythonopencv提取图像的区域 start_x=index_box[0]start_y=index_box[1]end_x=index_box[2]end_y=index_box[3]index_person_img=camera1_img[start_y......
  • python-基础语法
    python3保留字保留字即关键字,我们不能把它们用作任何标识符名称。Python的标准库提供了一个keyword模块,可以输出当前版本的所有关键字:点击查看代码importkeywordp......
  • python基础之面向对象
    python基础之面向对象面向对象前戏之人狗大战"""编写代码简单的实现人打狗,狗咬人的小游戏(剧情需要,人与狗是好朋友)"""#推导步骤1:代码定义出人和狗person1={'name......
  • python iloc() [[],[]] double list input
    datacalledframeABCDa0.5600940.3526860.954100b0.5637280.3355170.232902c0.4821550.9766180.565462d0.4771460.9333530.291764......
  • 生长算法和巡中线算法python实现代码示例(自用)
    生长算法和巡中线算法python实现代码示例(自用)importcv2importtimeimportnumpyasnpfrommathimportpi,isnan#PID算法类classPID():_kp=_ki=_kd......