最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python上下文管理器協(xié)議的實現(xiàn)

 更新時間:2022年06月23日 16:02:58   作者:henry_rhy  
這篇文章主要介紹了python上下文管理器協(xié)議的實現(xiàn),在python中所有實現(xiàn)了上下文管理器協(xié)議的對象 都可以用使用with操作,with啟動了對象的上下文管理器

前言

在上下文管理器協(xié)議的過程中,涉及到兩個魔術(shù)方法__enter__方法 和 __exit__方法

  • 在python中所有實現(xiàn)了上下文管理器協(xié)議的對象 都可以用使用with操作
  • with啟動了對象的上下文管理器

上下文管理器協(xié)議:

  • __enter__方法: 進(jìn)入enter方法返回的結(jié)果被as后面的變量接收
  • exit: 退出with中所有的語句執(zhí)行完畢執(zhí)行 執(zhí)行 exit

實現(xiàn)一個簡單的文件操作來看下上下文管理器協(xié)議:

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

? ? def __enter__(self):
? ? ? ? print("---enter---方法")
? ? ? ? # 執(zhí)行文件打開操作
? ? ? ? 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('當(dāng)前打開了文件,寫入了數(shù)據(jù):23323232'))

用pymysql實現(xiàn)一個操作數(shù)據(jù)庫的類,實現(xiàn)上下文管理器協(xié)議,實現(xiàn)退出上下文時,自動關(guān)閉游標(biāo),斷開連接

todo:版本1

# todo:版本1:
class mysql_db(object):
? ? #實例化屬性
? ? def __init__(self):

1.連接數(shù)據(jù)庫

? ? ? ? self.cou = pymysql.connect(
? ? ? ? ? ? host= "數(shù)據(jù)庫主機地址", ?
? ? ? ? ? ? port= 端口, ?
? ? ? ? ? ? user="登錄數(shù)據(jù)庫的賬號", ?
? ? ? ? ? ? password="登錄數(shù)據(jù)庫的密碼",?
? ? ? ? ? ? database="數(shù)據(jù)庫名稱", ?
? ? ? ? ? ? charset='utf8', ? ? 編碼格式
? ? ? ? ? ? cursorclass=pymysql.cursors.DictCursor ? ? 將默認(rèn)的元組格式轉(zhuǎn)換成字典格式輸出
? ? ? ? )? 

2.創(chuàng)建游標(biāo)

? ? ? ? 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:
? ? ? ? """
? ? ? ? #關(guān)閉游標(biāo)
? ? ? ? self.cur.close()
? ? ? ?# 關(guān)閉數(shù)據(jù)庫連接
? ? ? ? self.cou.close()
def Obtain_one_date():
? ? with mysql_db() as db:
? ? ? ? db.execute('select * from t_customer LIMIT 4') ? ? 使用execute方法進(jìn)行查詢語句
? ? ? ? content = db.fetchone() ?返回一條數(shù)據(jù)的查詢的結(jié)果
? ? ? ? print(content)

# 函數(shù)調(diào)用
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.創(chuàng)建數(shù)據(jù)庫連接對象

cou = mysql_db1()

2.創(chuàng)建游標(biāo)

with cou.cursor() as cu:
? ? cu.execute(sql) ? ? ?使用execute方法進(jìn)行查詢語句
? ? commt = cu.fetchone() ? ? 返回一條數(shù)據(jù)的查詢的結(jié)果
? ? print(commt)

# 函數(shù)調(diào)用
mysql_db1()

到此這篇關(guān)于python上下文管理器協(xié)議的實現(xiàn)的文章就介紹到這了,更多相關(guān)python上下文管理器 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python match語句的具體使用

    Python match語句的具體使用

    match語句接受一個表達(dá)式,并將其值與作為一個或多個case塊給出的連續(xù)模式進(jìn)行比較,本文主要介紹了Python match語句的具體使用,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 一百行python代碼將圖片轉(zhuǎn)成字符畫

    一百行python代碼將圖片轉(zhuǎn)成字符畫

    這篇文章主要為大家詳細(xì)介紹了一百行python代碼將圖片轉(zhuǎn)成字符畫 ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python淘寶搶購腳本程序?qū)崿F(xiàn)

    python淘寶搶購腳本程序?qū)崿F(xiàn)

    大家好,本篇文章主要講的是python淘寶搶購腳本程序?qū)崿F(xiàn),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Python中三元表達(dá)式的幾種寫法介紹

    Python中三元表達(dá)式的幾種寫法介紹

    今天小編就為大家分享一篇關(guān)于Python中三元表達(dá)式的幾種寫法介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • selenium獲取當(dāng)前頁面的url、源碼、title的方法

    selenium獲取當(dāng)前頁面的url、源碼、title的方法

    這篇文章主要介紹了selenium獲取當(dāng)前頁面的url、源碼、title的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 詳解python中absl包的使用

    詳解python中absl包的使用

    "absl" 是 Google 開發(fā)的一個 Python 軟件包,用于提供一些常見的 Python 編程功能和工具,以改善代碼的可讀性、可維護(hù)性和性能,下面我們就來看看absl包的具體使用吧
    2023-11-11
  • django項目用higcharts統(tǒng)計最近七天文章點擊量

    django項目用higcharts統(tǒng)計最近七天文章點擊量

    這篇文章主要介紹了django項目用higcharts統(tǒng)計最近七天文章點擊量,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 使用Python實現(xiàn)操作mongodb詳解

    使用Python實現(xiàn)操作mongodb詳解

    這篇文章主要為大家詳細(xì)介紹了使用Python實現(xiàn)操作mongodb的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-01-01
  • python模塊的安裝以及安裝失敗的解決方法

    python模塊的安裝以及安裝失敗的解決方法

    Python 模塊(Module),是一個 Python 文件,以 .py 結(jié)尾,包含了 Python 對象定義和Python語句。模塊讓你能夠有邏輯地組織你的 Python 代碼段。把相關(guān)的代碼分配到一個模塊里能讓你的代碼更好用,更易懂。模塊能定義函數(shù),類和變量,模塊里也能包含可執(zhí)行的代碼
    2021-11-11
  • 淺析Python中接口與抽象基類的使用

    淺析Python中接口與抽象基類的使用

    這篇文章主要為大家詳細(xì)介紹了Python中兩個為面向?qū)ο缶幊烫峁┑膹姶蠊ぞ呓涌诤统橄蠡惖氖褂?感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12

最新評論

凉山| 鄄城县| 米易县| 同心县| 肥城市| 辽阳县| 财经| 白银市| 禹城市| 洛川县| 宁远县| 乌拉特前旗| 博白县| 盐亭县| 克山县| 宁化县| 六安市| 肇州县| 温州市| 刚察县| 景德镇市| 建水县| 吉安市| 太原市| 丹阳市| 行唐县| 南昌县| 嘉义县| 东台市| 涿州市| 南华县| 通城县| 衡水市| 保康县| 吐鲁番市| 钟祥市| 太原市| 黔西| 景泰县| 邢台市| 外汇|