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.準備
開始之前,你要確保Python和pip已經成功安裝在電腦上。
請選擇以下任一種方式輸入指令安裝相依:
1. Windows 環境 開啟 Cmd (開始-執行-CMD)。
2. MacOS 環境 開啟 Terminal (command 空格輸入Terminal)。
3. 如果你用的是VSCode編輯器或Pycharm,可以直接使用介面下方的Terminal.
pip install tinydb
2.簡單的增刪改查範例
#初始化一個DB檔案:
from tinydb import TinyDB db = TinyDB('db.json')
這樣就在目前資料夾下產生了一個名為`db.json` 的資料庫檔案。
往裡面插入資料:
from tinydb import TinyDB 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} for i in range(2))
查詢所有資料:
from tinydb import TinyDB db = TinyDB('db.json') db.all() # [{'count': 7, 'type': 'apple'}, {'count': 3, 'type': 'peach'}]
除了.all() 我們還可以使用for迴圈遍歷db:
from tinydb import TinyDB db = TinyDB('db.json') for item in db: print(item) # {'count': 7, 'type': 'apple'} # {'count': 3, 'type': 'peach'}
如果你需要搜尋特定數據,可以使用Query():
from tinydb import TinyDB db = TinyDB('db.json') Fruit = Query() db.search(Fruit.type == 'peach') # [{'count': 3, 'type': 'peach'}] db.search(Fruit.count > 5) # [{'count': 7, 'type': 'apple'}]
更新數據:
from tinydb import TinyDB db = TinyDB('db.json') db.update({'foo': 'bar'}) # 删除某个Key from tinydb.operations import delete db.update(delete('key1'), User.name == 'John')
刪除數據:
#刪除資料也可以使用類似的條件語句:
from tinydb import TinyDB db = TinyDB('db.json') db.remove(Fruit.count < 5) db.all() # [{'count': 10, 'type': 'apple'}]
清空整個資料庫:
from tinydb import TinyDB 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語句:
from tinydb import where 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:/ /www.php.cn/link/8ff3fdef6f5144f50eb2a83cd34baa5d
#尤其是想基於TinyDB做些儲存優化的同學,你們可以詳細閱讀Storage & Middleware 章節。
以上是TinyDB 一個純Python編寫的輕量級資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver Mac版
視覺化網頁開發工具