国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    4019

    瀏覽量

    68339
  • 應用程序
    +關注

    關注

    38

    文章

    3344

    瀏覽量

    60251

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Oracle數據庫ASM實例無法掛載的數據恢復案例

    Oracle數據庫故障表現為ASM磁盤組掉線,ASM實例無法掛載(mount)。數據庫管理員自行進行簡單修復,未能成功,隨后聯系北亞數據
    的頭像 發表于 02-24 15:19 ?71次閱讀
    Oracle<b class='flag-5'>數據庫</b>ASM實例無法掛載的<b class='flag-5'>數據</b>恢復案例

    恒訊科技解析:如何安裝MySQL并創建數據庫

    安裝和管理MySQL不必復雜。只需幾分鐘,你就能在Linux服務器上搭建MySQL,創建第一個數據庫,甚至自動化備份——同時確保數據安全有序。 什么是 MySQL? MySQL 是
    的頭像 發表于 01-14 14:25 ?174次閱讀

    數據庫性能優化指南

    作為名在大廠摸爬滾打多年的運維老兵,我見過太多因為數據庫性能問題導致的生產事故。今天分享套完整的數據庫優化方法論,從SQL層面到硬件配置,幫你徹底解決性能瓶頸!
    的頭像 發表于 08-18 11:21 ?741次閱讀

    Crypto核心:顛覆傳統的數據安全輕量級加密方案

    傳統加密方案常陷入“安全與性能”的二元悖論。Crypto核心打破這僵局,通過輕量級架構與算法優化,實現加密解密的雙向突破:在保障銀行級安全的同時,將資源消耗壓縮至極致,讓數據安全“
    的頭像 發表于 08-04 14:44 ?712次閱讀
    Crypto核心<b class='flag-5'>庫</b>:顛覆傳統的<b class='flag-5'>數據</b>安全<b class='flag-5'>輕量級</b>加密方案

    基于米爾瑞芯微RK3576開發板部署運行TinyMaix:超輕量級推理框架

    本文將介紹基于米爾電子MYD-LR3576開發平臺部署超輕量級推理框架方案:TinyMaix 摘自優秀創作者-短笛君 TinyMaix 是面向單片機的超輕量級的神經網絡推理,即 TinyML
    發表于 07-25 16:35

    如何在RK3576開發板上運行TinyMaix :超輕量級推理框架--基于米爾MYD-LR3576開發板

    本文將介紹基于米爾電子MYD-LR3576開發平臺部署超輕量級推理框架方案:TinyMaix摘自優秀創作者-短笛君TinyMaix是面向單片機的超輕量級的神經網絡推理,即TinyML推理
    的頭像 發表于 07-25 08:03 ?4221次閱讀
    如何在RK3576開發板上運行TinyMaix :超<b class='flag-5'>輕量級</b>推理框架--基于米爾MYD-LR3576開發板

    數據庫數據恢復—服務器異常斷電導致Oracle數據庫故障的數據恢復案例

    Oracle數據庫故障: 某公司臺服務器上部署Oracle數據庫。服務器意外斷電導致數據庫報錯,報錯內容為“system01.dbf需要更多的恢復來保持
    的頭像 發表于 07-24 11:12 ?637次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—服務器異常斷電導致Oracle<b class='flag-5'>數據庫</b>故障的<b class='flag-5'>數據</b>恢復案例

    數據庫數據恢復—MongoDB數據庫文件丟失的數據恢復案例

    MongoDB數據庫數據恢復環境: 臺操作系統為Windows Server的虛擬機上部署MongoDB數據庫。 MongoDB數據庫
    的頭像 發表于 07-01 11:13 ?637次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—MongoDB<b class='flag-5'>數據庫</b>文件丟失的<b class='flag-5'>數據</b>恢復案例

    數據庫數據恢復—SQL Server數據庫被加密如何恢復數據?

    SQL Server數據庫故障: SQL Server數據庫被加密,無法使用。 數據庫MDF、LDF、log日志文件名字被篡改。
    的頭像 發表于 06-25 13:54 ?671次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—SQL Server<b class='flag-5'>數據庫</b>被加密如何恢復<b class='flag-5'>數據</b>?

    oracle數據恢復—oracle數據庫誤執行錯誤truncate命令如何恢復數據

    oracle數據庫誤執行truncate命令導致數據丟失是種常見情況。通常情況下,oracle數據庫誤操作刪除數據只需要通過備份恢復
    的頭像 發表于 06-05 16:01 ?1060次閱讀
    oracle<b class='flag-5'>數據</b>恢復—oracle<b class='flag-5'>數據庫</b>誤執行錯誤truncate命令如何恢復<b class='flag-5'>數據</b>?

    SQLSERVER數據庫是什么

    SQL Server 是由微軟公司開發的款 關系型數據庫管理系統(RDBMS) ,用于存儲、管理和檢索結構化數據。它是企業級應用中廣泛使用的數據庫解決方案之
    的頭像 發表于 05-26 09:19 ?1168次閱讀

    MySQL數據庫是什么

    MySQL數據庫種 開源的關系型數據庫管理系統(RDBMS) ,由瑞典MySQL AB公司開發,后被Oracle公司收購。它通過結構化查詢語言(SQL)進行數據存儲、管理和操作,廣
    的頭像 發表于 05-23 09:18 ?1203次閱讀

    HarmonyOS5云服務技術分享--云數據庫使用指南

    ? 華為云數據庫(CloudDB)在HarmonyOS中的使用指南 ? ??嗨,開發者朋友們!?? 今天咱們來聊聊華為云數據庫(CloudDB)在HarmonyOS應用中的集成和使用技巧。無論你是剛
    發表于 05-22 18:29

    SEGGER emFile支持大型數據庫

    SEGGER宣布emFile對大型數據庫的支持,集成了SQLite,方便與SEGGER的BigFAT和微軟的exFAT起使用。
    的頭像 發表于 04-23 15:51 ?772次閱讀

    數據庫數據恢復——MongoDB數據庫文件拷貝后服務無法啟動的數據恢復

    MongoDB數據庫數據恢復環境: 臺Windows Server操作系統虛擬機上部署MongoDB數據庫。 MongoDB數據庫
    的頭像 發表于 04-09 11:34 ?864次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復——MongoDB<b class='flag-5'>數據庫</b>文件拷貝后服務無法啟動的<b class='flag-5'>數據</b>恢復