日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python观察日志(part9)--数据库与pickle模块

發布時間:2023/12/19 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python观察日志(part9)--数据库与pickle模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,有錯必糾


數據庫


數據庫是一個有組織的用于存儲數據的文件,許多數據庫都像字典一樣組織數據,因為它也將鍵映射到值上,數據庫和字典之間最大的區別是數據庫是保存在磁盤上的(或者其他永久存儲上),所以當程序結束時它也能持續存在


  • dbm模塊

模塊dbm提供了接口用于創建和更新數據庫文件。

import dbm db = dbm.open('testdatabase', 'c')

在dbm.open方法中,若把參數設置為"c",則意味著如果數據庫不存在,則創建該數據庫。該方法會返回一個數據庫對象。


當創建一個新項時,dbm會更新數據庫文件,當訪問數據庫中的一項時,dbm會讀取文件:

In [41]: import dbm...: ...: db = dbm.open('testdatabase', 'c')...: db['Bunny.png'] = 'Photo of Huang.'...: print(db['Bunny.png']) b'Photo of Huang.'

我們看到,輸出的結果以b開頭,是一個字節序列。


如果對一個已經存在的鍵賦值,dbm會替換舊值:

In [42]: db['Bunny.png'] = 'Photo of Xiao Huang.'...: print(db['Bunny.png']) b'Photo of Xiao Huang.'

和其他文件一樣,當操作結束時,我們需要關閉數據庫:

db.close()

dbm的限制之一是鍵和值都必須是字符串字節,如果嘗試使用其他類型,則會報錯:

In [46]: db['test'] = 10 TypeError: values must be bytes or strings

這時,pickle模塊就可以幫上忙了!


pickle模塊


pickle模塊實現了用于序列化和反序列化Python對象結構的二進制協議。pickle模塊可以將python中幾乎所有的數據類型(列表,字典,集合,類等)進行序列化。


我在網上查了一下關于序列化和反序列化的定義

解釋1:

序列化 (Serialization)是將對象的狀態信息轉換為可以存儲或傳輸的形式的過程。 在序列化期間,對象將其當前狀態寫入到臨時或持久性存儲區。 以后,可以通過從存儲區中讀取或反序列化對象的狀態,重新創建該對象。

嗯,這個解釋還是挺好理解的。我們再以JAVA為例,看一下對于序列化和反序列化的解釋。

解釋2:

Java序列化就是指把Java對象轉換為字節序列的過程 Java反序列化就是指把字節序列恢復為Java對象的過程

感覺在python中序列化和反序列化的應用和JAVA很像鴨!

通過下面的實驗,我們可以看到,python中利用pickle.dumps函數對列表進行序列化,可以得到字節數據;再利用pickle.loads反序列化,可以重新得到列表。


  • dumps與loads

pickle.dumps接收一個對象作為參數,并返回它的字節串形式:

In [58]: import pickle...: ...: t1 = [1, 2, 3]...: s = pickle.dumps(t1)...: print(s)...: print(type(s)) b'\x80\x03]q\x00(K\x01K\x02K\x03e.' <class 'bytes'>

我們還可以使用pickle.loads重新構造對象:

import picklet1 = [1, 2, 3] s = pickle.dumps(t1) t2 = pickle.loads(s) print(t2)print('值相同么:', t1 == t2) print('是同一個對象么', t1 is t2)

輸出結果:

[1, 2, 3] 值相同么: True 是同一個對象么 False

利用pickle模塊,我們向數據庫中存入列表:

import dbm import pickledb = dbm.open('testdatabase', 'c')t = [1, 2, 3] s = pickle.dumps(t) db['list01'] = s print(db['list01'])db.close()

輸出結果:

b'\x80\x03]q\x00(K\x01K\x02K\x03e.'

perfect!

總結

以上是生活随笔為你收集整理的python观察日志(part9)--数据库与pickle模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 麻豆影视在线播放 | 欧美日韩一 | 久久综合日本 | 欧美亚洲丝袜 | 丰满熟妇人妻中文字幕 | 精品少妇久久久久久888优播 | 奇米影视一区二区 | 国产久视频 | 日本二区视频 | 一级做a爱片 | 黑人玩弄人妻一区二区绿帽子 | 毛片一级片 | 午夜在线免费视频 | 色人阁av | 国产精品久久久久久妇女6080 | 国产视频一区二区在线 | 久久免费视频6 | 91丨九色丨丰满人妖 | 国语精品久久 | 99riav视频| 亚洲va国产天堂va久久 en | 午夜激情在线观看视频 | 免费中文字幕在线观看 | 91久久久久久久久久久 | 日本少妇做爰全过程毛片 | aaaaa级片| 无码人妻精品一区二区50 | 毛片免费全部无码播放 | 天天草天天射 | 91精品免费 | 欧美日韩一区二区不卡 | 91精品人妻一区二区三区果冻 | 久久精品欧美一区二区三区麻豆 | 精品人妻少妇嫩草av无码专区 | 日日影院| 不卡黄色 | 69日影院 | 亚州激情视频 | 久操色 | 无码人妻精品一区二区三区9厂 | 国产一级爱c视频 | 天天看毛片 | 毛片网| 日本黄色xxxxx | 欧美三级在线看 | av黄色免费在线观看 | www.美色吧.com | 波多野在线观看 | 黑丝袜av| 久久国产精品免费视频 | 精品久久久久成人码免费动漫 | 福利一区在线观看 | 久久午夜av | 天天爽天天插 | 男女超爽视频免费播放 | 亚洲AV无码精品国产 | 美女被爆操网站 | 中文字幕在线播出 | 精品久久久久久一区二区里番 | 天天干,天天操,天天射 | 久久精品人妻av一区二区三区 | 欧美日韩免费在线观看 | 亚洲色图首页 | 国产图区 | 不卡一区二区在线视频 | 日韩一区二区精品 | 国产凹凸一区二二区 | 久久久久成人精品免费播放动漫 | 成人久久久精品乱码一区二区三区 | 日本少妇久久 | 麻豆久久久久久久 | 国产aa毛片 | 亚洲精品1 | 日韩福利视频 | 新红楼梦2005锦江版高清在线观看 | 天天做天天射 | 国语对白做受69 | 一本色道综合久久欧美日韩精品 | 成人av日韩 | 久久亚洲无码视频 | 青青操在线观看视频 | 久久精品99国产精品日本 | 黄片一区二区 | 91精品国产91久久久久久久久久久久 | 国产在线观看一区二区三区 | 国产乱人乱偷精品视频a人人澡 | 久久综合综合 | 欧美又粗又长又爽做受 | 日韩综合av| 伊人网中文字幕 | 亚洲三级欧美 | 国产成人一区 | 日韩电影网址 | 亚洲综合精品一区 | 日韩超碰在线 | 欧美疯狂做受 | 人妖videosex高潮另类 | 天天色宗合 | 黄色调教视频 |