在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個純Python編寫的輕量級數據庫

數據分析與開發 ? 來源:數據分析與開發 ? 作者:數據分析與開發 ? 2022-10-28 14:16 ? 次閱讀
TinyDB 是一個純 Python 編寫的輕量級數據庫,一共只有1800行代碼,沒有外部依賴項。

TinyDB的目標是降低小型 Python 應用程序使用數據庫的難度,對于一些簡單程序而言與其用 SQL 數據庫,不如就用TinyDB, 因為它有如下特點:

  • 輕便:當前源代碼有 1800 行代碼(大約 40% 的文檔)和 1600 行測試代碼。
  • 可隨意遷移:在當前文件夾下生成數據庫文件,不需要任何服務,可以隨意遷移。
  • 簡單:TinyDB 通過提供簡單干凈的 API 使得用戶易于使用。
  • 用純 Python 編寫:TinyDB 既不需要外部服務器,也不需要任何來自 PyPI 的依賴項。
  • 適用于 Python 3.6+ 和 PyPy3:TinyDB 適用于所有現代版本的 Python 和 PyPy。
  • 強大的可擴展性:您可以通過編寫中間件修改存儲的行為來輕松擴展 TinyDB。
  • 100% 測試覆蓋率:無需解釋。

1.準備

開始之前,需要先安裝它

pip installtinydb

2.簡單的增刪改查示例

初始化一個DB文件:

fromtinydb importTinyDB
db = TinyDB('db.json')

這樣就在當前文件夾下生成了一個名為 `db.json` 的數據庫文件。

往里面插入數據
fromtinydb importTinyDB
db = TinyDB('db.json')
db.insert({'type': 'apple', 'count': 7})
db.insert({'type': 'peach', 'count': 3})
可以看到,我們可以直接往數據庫里插入字典數據,不需要任何處理。下面是批量插入的方法:
db.insert_multiple([
{'name': 'John', 'age': 22},
{'name': 'John', 'age': 37}])
db.insert_multiple({'int': 1, 'value': i} fori inrange(2))

查詢所有數據

fromtinydb importTinyDB
db = TinyDB('db.json')
db.all()
# [{'count': 7, 'type': 'apple'}, {'count': 3, 'type': 'peach'}]
除了 .all() 我們還可以使用for循環遍歷db:
fromtinydb importTinyDB
db = TinyDB('db.json')
foritem indb:
print(item)
# {'count': 7, 'type': 'apple'}
# {'count': 3, 'type': 'peach'}
如果你需要搜索特定數據,可以使用Query():
fromtinydb importTinyDB
db = TinyDB('db.json')
Fruit = Query()
db.search(Fruit.type == 'peach')
# [{'count': 3, 'type': 'peach'}]
db.search(Fruit.count > 5)
# [{'count': 7, 'type': 'apple'}]

更新數據:

fromtinydb importTinyDB
db = TinyDB('db.json')
db.update({'foo': 'bar'})

# 刪除某個Key
fromtinydb.operations importdelete
db.update(delete('key1'), User.name == 'John')
刪除數據

刪除數據也可以使用類似的條件語句:

fromtinydb importTinyDB
db = TinyDB('db.json')
db.remove(Fruit.count < 5)
db.all()
# [{'count': 10, 'type': 'apple'}]
清空整個數據庫:
fromtinydb importTinyDB
db = TinyDB('db.json')
db.truncate()
db.all()
# []

3.高級查詢

除了點操作符訪問數據,你還可以用原生的dict訪問表示法:
# 寫法1
db.search(User.country-code == 'foo')
# 寫法2
db.search(User['country-code'] == 'foo')
這兩種寫法是等效的。

另外在常見的查詢運算符(==, <, >, ...)之外,TinyDB還支持where語句:

fromtinydb importwhere
db.search(where('field') == 'value')
這等同于:
db.search(Query()['field'] == 'value')
這種語法還能訪問嵌套字段:
db.search(where('birthday').year == 1900)
# 或者
db.search(where('birthday')['year'] == 1900)
Any 查詢方法:
db.search(Group.permissions.any(Permission.type == 'read'))
# [{'name': 'user', 'permissions': [{'type': 'read'}]},
# {'name': 'sudo', 'permissions': [{'type': 'read'}, {'type': 'sudo'}]},
# {'name': 'admin', 'permissions':
# [{'type': 'read'}, {'type': 'write'}, {'type': 'sudo'}]}]
檢查單個項目是否包含在列表中:
db.search(User.name.one_of(['jane', 'john']))
TinyDB還支持和Pandas類似的邏輯操作:
# Negate a query:
db.search(~ (User.name == 'John'))
# Logical AND:
db.search((User.name == 'John') & (User.age <= 30))
# Logical OR:
db.search((User.name == 'John') | (User.name == 'Bob'))
TinyDB的介紹就到這里,你還可以訪問他們的官方文檔,查看更多的使用方法:

https://tinydb.readthedocs.io/en/latest/usage.html

尤其是想基于TinyDB做些存儲優化的同學,你們可以詳細閱讀 Storage & Middleware 章節。

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3846

    瀏覽量

    64685
  • 應用程序
    +關注

    關注

    38

    文章

    3292

    瀏覽量

    57914

原文標題:一個純 Python 編寫的輕量級數據庫 -- TinyDB

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    適用于MySQL和MariaDB的Python連接器:可靠的MySQL數據連接器和數據庫

    和 MariaDB 數據庫服務器以及托管數據庫服務,以對存儲的數據執行創建、讀取、更新和刪除操作。該解決方案完全實現了 Python DB API 2.0 規范,并作為 Window
    的頭像 發表于 01-17 12:18 ?122次閱讀
    適用于MySQL和MariaDB的<b class='flag-5'>Python</b>連接器:可靠的MySQL<b class='flag-5'>數據</b>連接器和<b class='flag-5'>數據庫</b>

    MySQL數據庫的安裝

    MySQL是開源免費的關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下公司。 MySQL 最流行的關系型數據庫管理系統,在 WEB 應用方面M
    的頭像 發表于 01-14 11:25 ?131次閱讀
    MySQL<b class='flag-5'>數據庫</b>的安裝

    適用于Oracle的Python連接器:可訪問托管以及非托管的數據庫

    適用于 Oracle 的 Python 連接器 適用于 Oracle 的 Python 連接器是種可靠的連接解決方案,用于從 Python 應用程序訪問 Oracle
    的頭像 發表于 01-14 10:30 ?108次閱讀

    數據庫是哪種數據庫類型?

    數據庫種部署在虛擬計算環境中的數據庫,它融合了云計算的彈性和可擴展性,為用戶提供高效、靈活的數據庫服務。云數據庫主要分為兩大類:關系型
    的頭像 發表于 01-07 10:22 ?141次閱讀

    數據庫數據恢復—Mysql數據庫表記錄丟失的數據恢復流程

    Mysql數據庫故障: Mysql數據庫表記錄丟失。 Mysql數據庫故障表現: 1、Mysql數據庫表中無任何數據或只有部分
    的頭像 發表于 12-16 11:05 ?223次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—Mysql<b class='flag-5'>數據庫</b>表記錄丟失的<b class='flag-5'>數據</b>恢復流程

    數據庫事件觸發的設置和應用

    數據庫無論對于生產管理還是很多的實際應用都非常重要。小編這次聊數據庫事件觸發的應用。示例使用了postgresql和Python
    的頭像 發表于 12-13 15:14 ?216次閱讀

    EEPROM輕量級的簡易類文件的數據讀寫:EEPROMFS

    小。 這里就給大家分享款EEPROM輕量級的簡易類文件的數據讀寫:EEPROMFS 1 關于EEPROMFS EEPROMFS,基于EEPROM的簡易類文件的
    的頭像 發表于 11-15 16:31 ?617次閱讀
    EEPROM<b class='flag-5'>輕量級</b>的簡易類文件的<b class='flag-5'>數據</b>讀寫<b class='flag-5'>庫</b>:EEPROMFS

    數據庫數據恢復—通過拼接數據庫碎片恢復SQLserver數據庫

    運行在存儲上的SQLServer數據庫,有1000多個文件,大小幾十TB。數據庫每10天生成
    的頭像 發表于 10-31 13:21 ?336次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—通過拼接<b class='flag-5'>數據庫</b>碎片恢復SQLserver<b class='flag-5'>數據庫</b>

    企業級數據庫的配置和管理要求匯總

    企業級數據庫配置需高性能硬件支撐,包括服務器、存儲、網絡及電源冗余,選用穩定DBMS與操作系統,注重索引與查詢優化。管理上,強調數據安全,實施加密、訪問控制與審計;確保高可用,配置容錯機制與備份恢復;監控調優性能,規劃容量與擴展性;追求易用性,簡化日常管理與維護,確保
    的頭像 發表于 09-27 10:50 ?243次閱讀

    數據庫數據恢復—SQL Server數據庫出現823錯誤的數據恢復案例

    SQL Server數據庫故障: SQL Server附加數據庫出現錯誤823,附加數據庫失敗。數據庫沒有備份,無法通過備份恢復數據庫
    的頭像 發表于 09-20 11:46 ?409次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—SQL Server<b class='flag-5'>數據庫</b>出現823錯誤的<b class='flag-5'>數據</b>恢復案例

    軟通動力數據庫全棧服務,助力企業數據庫體系全面升級

    。在企業節與"數博會"展區,軟通動力受邀分享數據庫專業服務全棧解決方案,并重點展示以全棧云服務為核心的數智化能力。 軟通動力高級數據庫服務專家劉江云在開放演講中,分享了軟通動力數據庫專業服務全棧解決方案與服務優勢。該方案構建了端
    的頭像 發表于 09-05 15:30 ?380次閱讀
    軟通動力<b class='flag-5'>數據庫</b>全棧服務,助力企業<b class='flag-5'>數據庫</b>體系全面升級

    鴻蒙語言基礎類:ohos.data.storage 輕量級存儲

    輕量級存儲為應用提供key-value鍵值型的文件數據處理能力,支持應用對數據進行輕量級存儲及查詢。數據存儲形式為鍵值對,鍵的類型為字符串型
    的頭像 發表于 07-15 18:21 ?1046次閱讀

    數據庫數據恢復—SQL Server數據庫所在分區空間不足報錯的數據恢復案例

    Server數據庫故障: 存放SQL Server數據庫的D盤分區容量不足,管理員在E盤中生成了.ndf的文件并且將數據庫路徑指向E
    的頭像 發表于 07-10 13:54 ?578次閱讀

    國產芯上運行TinyMaxi輕量級的神經網絡推理-米爾基于芯馳D9國產商顯板

    本篇測評由與非網的優秀測評者“短笛君”提供。本文將介紹基于米爾電子MYD-YD9360商顯板(米爾基于芯馳D9360國產開發板)的TinyMaxi輕量級的神經網絡推理方案測試。算力測試
    的頭像 發表于 07-05 08:02 ?1942次閱讀
    國產芯上運行TinyMaxi<b class='flag-5'>輕量級</b>的神經網絡推理<b class='flag-5'>庫</b>-米爾基于芯馳D9國產商顯板

    數據庫數據恢復—raid5陣列上層Sql Server數據庫數據恢復案例

    數據庫數據恢復環境: 5塊硬盤組建組RAID5陣列,劃分LUN供windows系統服務器使用。windows系統服務器內運行了Sql Server數據庫,存儲空間在操作系統層面劃分
    的頭像 發表于 05-08 11:43 ?578次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—raid5陣列上層Sql Server<b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復案例
    主站蜘蛛池模板: 亚洲激情婷婷 | www欧美在线观看 | 亚洲毛片儿 | 天天草比 | 爱婷婷视频在线观看 | jiucao视频在线观看 | 天天躁狠狠躁夜夜躁 | 最近2018年在线中文字幕高清 | 国产三级国产精品 | 一二三区视频 | 亚洲网在线 | 亚洲综合黄色 | a级黄色毛片三个搞一 | 亚洲精品色图 | 免费理论片在线观看播放 | 三级国产| 天天插天天射天天操 | 噜噜噜噜天天狠狠 | 色天使亚洲综合在线观看 | 伦理片日本韩国电影三级在线观看 | 人人干视频| 最好免费高清视频观看韩国 | 亚洲一区二区三 | va在线观看 | 国模欢欢大尺度 | 精品综合久久88色鬼首页 | 久久午夜精品 | 亚洲狠狠网站色噜噜 | 女人精aaaa片一级毛片女女 | 毛片免费观看 | 在线www 天堂网在线 | 亚洲一区免费在线观看 | 美女扒开尿口给男的桶个爽 | 午夜欧美精品久久久久久久久 | 天天干天天爽天天操 | 99久久精品久久久久久婷婷 | 天天搞天天搞 | 激激婷婷综合五 | 国产深夜福利在线观看网站 | 精品玖玖| 亚洲影院手机版777点击进入影院 |