對象持久化

一、扁平文件

1、文本文件

二、pickle

(用於python特有的類型和python的數據類型間進行轉換)
其可存儲的類型

  • 所有python支持的原生類型:布爾值,整數,浮點數,複數,字符串,字節,None
  • 由任何原生類型組成的列表,元組,字典和集合
  • 函數,類,類的實例

pickle默認操作二進制文件,使用文件函數的時候需要注意,否則出現 TypeError

import pickle
person = {"name":"Peter","age":10}

##序列化爲字符串##
s = pickle.dumps(person)#對象序列化爲字符串

p = pickle.loads(s)#字符串反序列化爲對象

##序列化對象到文件##
pickle.dump(person,open("pickle_db","wb"))#必須二進制寫入
p2 = pickle.load(open("pickle_db","rb"))

總結

  • 序列化爲字符串
    .dumps(obj) #對象序列化爲字符串
    .loads(obj) #字符串反序列化爲對象
  • 序列化對象到文件
    .dump(obj,file)
    .load(file)

三、shelve

shelve是python中用來持久化存儲的模塊,類似於一個key-value的數據庫,但是這裏的value不限定類型,可以是python中任意的數據類型,也可以是自己定義的數據類型。

import shelve
score = [99,98,77]
student = {"name":"Mike","age":20}
db = shelve.open("shelve_student")
db['s'] = student
db['score'] = score
del db['score']  #刪除
db.close()

總結:
.open(“dbfile”)
.close()
db[‘key1’] = obj1 #obj1 可以爲字典,列表等等類型
db[‘key2’] = obj2 #obj2 可以爲字典,列表等等類型

len(db)
del db[‘keyn’]

四、ORM

python-ORM
在這裏插入圖片描述
另外關於字符串

這裏是引用
在這裏插入圖片描述
在這裏插入圖片描述

其中bytes屬於不可變的
bytearray 可通過obj[n] = m,n和m都是整型,m不能大於255,不能小於0
Python中eval的強大與危害

發佈了37 篇原創文章 · 獲贊 13 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章