iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python上下文管理器协议的实现
  • 383
分享到

python上下文管理器协议的实现

2024-04-02 19:04:59 383人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录前言todo:版本1todo:版本2前言 在上下文管理器协议的过程中,涉及到两个魔术方法__enter__方法 和 __exit__方法 在python中所有实现了上下文管理器协

前言

在上下文管理器协议的过程中,涉及到两个魔术方法__enter__方法 和 __exit__方法

  • python中所有实现了上下文管理器协议的对象 都可以用使用with操作
  • with启动了对象的上下文管理器

上下文管理器协议:

  • __enter__方法: 进入enter方法返回的结果被as后面的变量接收
  • exit: 退出with中所有的语句执行完毕执行 执行 exit

实现一个简单的文件操作来看下上下文管理器协议:

class MyOpen:
    # 实例化
    def __init__(self, filename, mode, encoding):
        self.filename = filename
        self.mode = mode
        self.encoding = encoding

    def __enter__(self):
        print("---enter---方法")
        # 执行文件打开操作
        self.f = open(self.filename, self.mode, encoding=self.encoding)
        return self.f

    def __exit__(self, exc_type, exc_val, exc_tb):
        """
        :param exc_type: 异常类型
        :param exc_val: 异常信息
        :param exc_tb: 异常溯源对象
        :return:
        """
        print('----enter---')
        self.f.close()
with MyOpen('hr.txt', 'w', encoding='utf-8') as f:
    print(f.write('当前打开了文件,写入了数据:23323232'))

用pyMysql实现一个操作数据库的类,实现上下文管理器协议,实现退出上下文时,自动关闭游标,断开连接

todo:版本1

# todo:版本1:
class mysql_db(object):
    #实例化属性
    def __init__(self):

1.连接数据库

        self.cou = pymysql.connect(
            host= "数据库主机地址",  
            port= 端口,  
            user="登录数据库的账号",  
            passWord="登录数据库的密码", 
            database="数据库名称",  
            charset='utf8',     编码格式
            cursorclass=pymysql.cursors.DictCursor     将默认的元组格式转换成字典格式输出
        )  

2.创建游标

        self.cur = self.cou.cursor()
    def __enter__(self):
        return self.cur       返回cur对象
    def __exit__(self, exc_type, exc_val, exc_tb):
        """
        :param exc_type: 异常类型
        :param exc_val: 异常信息
        :param exc_tb: 异常溯源对象
        :return:
        """
        #关闭游标
        self.cur.close()
       # 关闭数据库连接
        self.cou.close()
def Obtain_one_date():
    with mysql_db() as db:
        db.execute('select * from t_customer LIMIT 4')     使用execute方法进行查询语句
        content = db.fetchone()  返回一条数据的查询的结果
        print(content)

# 函数调用
Obtain_one_date()

todo:版本2

sql = 'select * from t_customer LIMIT 4'
def mysql_db1(**kwargs):
    return pymysql.connect(host=kwargs.get('host', 'xxxx'),
                           user=kwargs.get("user",'xxxx'),
                           passwd=kwargs.get("passwd",'xxxx'),
                           database=kwargs.get("database",'xxxx'),
                           port=kwargs.get('port', xxxx),
                           charset=kwargs.get('charset', 'utf8'))

1.创建数据库连接对象

cou = mysql_db1()

2.创建游标

with cou.cursor() as cu:
    cu.execute(sql)      使用execute方法进行查询语句
    commt = cu.fetchone()     返回一条数据的查询的结果
    print(commt)

# 函数调用
mysql_db1()

到此这篇关于Python上下文管理器协议的实现的文章就介绍到这了,更多相关python上下文管理器 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python上下文管理器协议的实现

本文链接: https://www.lsjlt.com/news/118875.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python上下文管理器协议的实现
    目录前言todo:版本1todo:版本2前言 在上下文管理器协议的过程中,涉及到两个魔术方法__enter__方法 和 __exit__方法 在python中所有实现了上下文管理器协...
    99+
    2024-04-02
  • python上下文管理器协议怎么实现
    这篇文章主要介绍了python上下文管理器协议怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python上下文管理器协议怎么实现文章都会有所收获,下面我们一起来看看吧。前言在上下文管理器协议的过程中,涉...
    99+
    2023-07-02
  • Python中with上下文管理协议的作用及用法
    目录1、简介2、try… except语句(1)try…except的标准格式(2)程序执行流程(3)异常分类3、try…finallly语...
    99+
    2024-04-02
  • python上下文管理器怎么实现类
    本篇内容介绍了“python上下文管理器怎么实现类”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明通过定义__enter__和__exit...
    99+
    2023-06-20
  • Python上下文管理器实现方法有哪些
    这篇文章主要介绍“Python上下文管理器实现方法有哪些”,在日常操作中,相信很多人在Python上下文管理器实现方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python上下文管理器实现方法有哪些...
    99+
    2023-06-20
  • Python利用contextvars实现管理上下文变量
    目录web 框架中的 requestThreadLocalcontextvarsc.Tokencontextvars.Context小结Python 在 3.7 的时候引入了一个模块...
    99+
    2024-04-02
  • Java FTP协议实现文件下载功能
    目录一、FTP协议二、文件上传1.连接服务器2.登录操作3.上传操作三、文件下载1.连接服务器2.登录操作3.下载操作四、总结一、FTP协议 ftp是(FileTransferPro...
    99+
    2022-11-13
    Java文件下载 Java FTP 文件下载 Java FTP协议
  • python上下文管理器是什么
    本篇文章给大家分享的是有关python上下文管理器是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python的五大特点是什么python的五大特点:1.简单易学,开发程序...
    99+
    2023-06-14
  • Python深入02 上下文管理器
    上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围。一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存)。它的语法形式是with...as...关闭文件...
    99+
    2023-06-02
  • JSch中怎么使用sftp协议实现服务器文件上传下载
    这篇文章主要介绍了JSch中怎么使用sftp协议实现服务器文件上传下载的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JSch中怎么使用sftp协议实现服务器文件上传下载文章都会有所收获,下面我们一起来看看吧。J...
    99+
    2023-06-29
  • 详解Python中的上下文管理器原理
    目录with语句上下文管理器原理自定义上下文管理器contextmanager 装饰器with语句 在我们日常使用场景中,经常会操作一些资源,比如文件对象、数据库连接、Socket连...
    99+
    2023-03-11
    Python上下文管理器原理 Python上下文管理器使用 Python上下文管理器
  • Python上下文管理器怎么使用
    这篇文章主要介绍了Python上下文管理器怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python上下文管理器怎么使用文章都会有所收获,下面我们一起来看看吧。什么是上...
    99+
    2024-04-02
  • 深人了解Python上下文管理器
    目录with语句上下文管理器创建基于类的上下文管理器@contextmanager 装饰器总结下面先来介绍一下with关键字在文件读写中的应用,简单了解上下文管理器的功能。 with...
    99+
    2024-04-02
  • Python上下文管理器深入讲解
    目录引子概念上下文管理协议(Context Management Protocol)上下文管理器(Context Manager)引子 上下文管理器是一种简化代码的有力方式,其内部也...
    99+
    2022-12-21
    Python上下文管理器 Python上下文
  • Python中SSH协议的实现 - Pa
    操作系统维护时, 一般会通过ssh命令连接到远端服务器, 进行某些操作. 那Python中如何完成这些呢, 当然也能执行ssh命令, 但还有更优雅的方式, 借助Paramiko, 其为实现了SSHv2协议的一开源项目, 下面主要使用了它的s...
    99+
    2023-01-31
    协议 Python SSH
  • Python中的上下文管理器原理是什么
    这篇“Python中的上下文管理器原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python中的上下文管理器原理是...
    99+
    2023-07-05
  • python中上下文管理器的原理是什么
    今天就跟大家聊聊有关python中上下文管理器的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WE...
    99+
    2023-06-14
  • Python上下文管理器的作用是什么
    本篇内容介绍了“Python上下文管理器的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明上下文管理器允许在需要时准确分配和释放...
    99+
    2023-06-20
  • 一文带你搞懂Python上下文管理器
    目录一、什么是上下文管理器二、如何实现上下文管理器1. 通过类实现1)_enter_2)_exit_2. 通过contextlib实现总结一、什么是上下文管理器 我们在处理文件的时候...
    99+
    2024-04-02
  • 基于 Hyperf ,进行便捷的上下文和协程调度管理,实现 伪事务 般的defer应用和请求级上下文管理
    hyperf Hyperf go Coroutine defer 场景 一个API项目,日常写代码过程中,在需要进行上下文设置时,当然是字面意思,但有时候,一个API动作的完成,可能需要有一些主...
    99+
    2023-10-09
    数据库 php swoole
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作