TinyDB 是純 Python 寫的輕量級資料庫,總共只有1800行程式碼,沒有外部相依性。
TinyDB的目標是降低小型Python 應用程式使用資料庫的難度,對於某些簡單程式而言與其用SQL 資料庫,不如就用TinyDB, 因為它有以下特點:
開始之前,你要確保Python和pip已經成功安裝在電腦上。
1. Windows 環境 開啟 Cmd (開始-執行-CMD)。
2. MacOS 環境 開啟 Terminal (command 空格輸入Terminal)。
3. 如果你用的是VSCode編輯器或Pycharm,可以直接使用介面下方的Terminal.
pip install tinydb
#初始化一個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() # []
除了點運算子存取數據,你還可以用原生的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中文網其他相關文章!