<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          最近發(fā)現(xiàn)的 3 個 Python 輕量級數(shù)據(jù)庫,好用到爆!

          共 1958字,需瀏覽 4分鐘

           ·

          2022-06-01 17:39

          你好,我是征哥,在寫程序的時候經(jīng)常會需要將數(shù)據(jù)保存到本地,比如是配置文件,或者是中間過程數(shù)據(jù),通過情況下我會選擇 json、pickle 或者 sqlite。但是他們都有點不大方便。

          比如 json 和 pickle,需要先序列化保存到文件,讀的時候再反序列化成 Python 對象。往往搞不清楚是 load 還是 dump,是 loads 還是 dumps,需要查下文檔。而 sqlite,雖然是文件數(shù)據(jù)庫,但用起來和大的數(shù)據(jù)庫 MySQL 的復(fù)雜度也差不多。

          今天分享一下這些專門為 Python 打造的輕量級數(shù)據(jù)庫,使用起來真的簡單到爆,寫代碼時沒有記憶負擔(dān)。

          Shelve

          如果說 Python 中的字典(dict)是保存在內(nèi)存中的,那么標準庫 shelve[1] 就像是保存在文件中的字典,它的值可以為為任意 pickle 模塊能夠處理的 Python 對象,這包括大部分類實例、遞歸數(shù)據(jù)類型,以及包含大量共享子對象的對象,它的鍵則為普通的字符串。

          使用方法:shelve.open(filename, flag='c', protocol=None, writeback=False)

          示例代碼如下,可以看下注釋:

          import?shelve

          #?寫入
          db?=?shelve.open("store")
          db["data"]?=?{"name":?"Python七號",?"author":?"somenzz"}
          db.close()

          #?會生成文件?store.db

          #?推薦這種寫法?
          with?shelve.open("store")?as?db:
          ????db["data"]?=?{"name":?"Python七號",?"author":?"somenzz"}


          #讀取
          with?shelve.open("store")?as?db:
          ????print(db["data"])

          #out?{'name':?'Python七號',?'author':?'somenzz'}

          pickleDB

          pickleDB[2] 是一個輕量級且簡單的鍵值對存儲。它建立在 Python 的 simplejson 模塊之上,并受到 redis 的啟發(fā)。可以通過 pip install pickledb 進行安裝。

          使用方法:

          >>>?import?pickledb
          >>>?db?=?pickledb.load('example.db',?auto_dump?=?False)
          >>>?db.set('name',?'Python七號')
          True
          >>>?db.get('name')
          'Python七號'
          >>>?db.dump()
          True

          TinyDB

          與 pickleDB 和 Shelve 類似,TinyDB 是另一種快速且輕量級的鍵值對存儲。TinyDB[3] 的優(yōu)點是非常快,非常簡單易用。TinyDB 的接口類似于許多鍵值存儲,但提供了許多附加功能,例如編寫自己的存儲中間件能力。

          用法:

          import?tinydb

          db?=?tinydb.TinyDB("store.json")
          db.insert({"name":?"Python七號"})
          db.insert({"author":?"somenzz"})
          results?=?db.all()
          print(results)

          #?output?[{'name':?'Python七號'},?{'author':?'somenzz'}]

          還可以這樣用:

          >>>?from?tinydb?import?TinyDB,?Query
          >>>?db?=?TinyDB('path/to/db.json')
          >>>?User?=?Query()
          >>>?db.insert({'name':?'Python七號',?'author':?'somenzz'})
          >>>?db.search(User.name?==?'Python七號')
          [{'name':?'Python七號',?'author':?'somenzz'}]

          是不是很方便?

          最后的話

          本文分享了 3 個輕量級的 Python 文件型數(shù)據(jù)庫,它們都非常簡單易用,希望對你的編程有所幫助。獨學(xué)而無友,則孤陋而寡聞,因此我組建了一個純技術(shù)交流群,關(guān)注公眾號「Python七號」回復(fù)「入群」加入技術(shù)交流群。

          參考資料

          [1]

          shelve: https://docs.python.org/zh-cn/3/library/shelve.html

          [2]

          pickleDB: https://pythonhosted.org/pickleDB/

          [3]

          TinyDB: https://tinydb.readthedocs.io/en/latest/


          瀏覽 48
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  北条麻妃久久 | 日本A级特黄视频论坛 | 国产精品久久久久久久久久久易记 | 欧美成人AAA片一区国产精品 | 中文字幕在线官网 |