自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

TinyDB 一個純Python編寫的輕量級數(shù)據(jù)庫

開發(fā) 后端 數(shù)據(jù)庫
TinyDB 是一個純 Python 編寫的輕量級數(shù)據(jù)庫,一共只有1800行代碼,沒有外部依賴項。

TinyDB 是一個純 Python 編寫的輕量級數(shù)據(jù)庫,一共只有1800行代碼,沒有外部依賴項。

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

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

1.準備

開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上。

請選擇以下任一種方式輸入命令安裝依賴:

1. Windows 環(huán)境 打開 Cmd (開始-運行-CMD)。

2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。

3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.

pip install tinydb

2.簡單的增刪改查示例

初始化一個DB文件:

from tinydb import TinyDB
db = TinyDB('db.json')

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

往里面插入數(shù)據(jù):

from tinydb import TinyDB
db = TinyDB('db.json')
db.insert({'type': 'apple', 'count': 7})
db.insert({'type': 'peach', 'count': 3})

可以看到,我們可以直接往數(shù)據(jù)庫里插入字典數(shù)據(jù),不需要任何處理。下面是批量插入的方法:

db.insert_multiple([
{'name': 'John', 'age': 22},
{'name': 'John', 'age': 37}])
db.insert_multiple({'int': 1, 'value': i} for i in range(2))

查詢所有數(shù)據(jù):

from tinydb import TinyDB
db = TinyDB('db.json')
db.all()
# [{'count': 7, 'type': 'apple'}, {'count': 3, 'type': 'peach'}]

除了 .all() 我們還可以使用for循環(huán)遍歷db:

from tinydb import TinyDB
db = TinyDB('db.json')
for item in db:
print(item)
# {'count': 7, 'type': 'apple'}
# {'count': 3, 'type': 'peach'}

如果你需要搜索特定數(shù)據(jù),可以使用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'}]

更新數(shù)據(jù):

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')

刪除數(shù)據(jù):

刪除數(shù)據(jù)也可以使用類似的條件語句:

from tinydb import TinyDB
db = TinyDB('db.json')
db.remove(Fruit.count < 5)
db.all()
# [{'count': 10, 'type': 'apple'}]

清空整個數(shù)據(jù)庫:

from tinydb import TinyDB
db = TinyDB('db.json')
db.truncate()
db.all()
# []

3.高級查詢

除了點操作符訪問數(shù)據(jù),你還可以用原生的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://tinydb.readthedocs.io/en/latest/usage.html???

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

責任編輯:龐桂玉 來源: Python客棧
相關(guān)推薦

2023-11-24 11:11:08

Python數(shù)據(jù)庫

2021-12-06 15:11:34

鴻蒙HarmonyOS應用

2022-07-14 11:31:04

SQLToolsVScode數(shù)據(jù)庫

2021-08-31 14:58:52

鴻蒙HarmonyOS應用

2025-04-17 04:00:00

SQLite-WebSQLite數(shù)據(jù)庫

2019-12-13 19:00:26

PekwmLinux桌面

2025-02-06 08:06:05

2023-12-13 08:22:45

SQLite關(guān)系型數(shù)據(jù)庫

2022-06-06 22:23:26

Tina工具Markdown

2020-06-10 08:23:44

JavaScript開發(fā)Web

2013-02-20 14:54:03

C#.NETNDatabase

2022-08-10 12:21:07

PythonWebBottle

2023-06-28 08:16:50

Autofac應用程序

2021-10-27 11:29:32

框架Web開發(fā)

2025-04-25 09:00:00

2021-01-05 08:35:24

GNU nanoVim編輯器

2022-05-16 07:37:58

SQL 編輯器數(shù)據(jù)庫管理工具

2021-05-14 10:45:21

PythonNoSQL數(shù)據(jù)庫

2025-01-09 08:00:00

Fluxy文件傳輸

2017-05-18 12:16:03

LinuxPythonNoSql
點贊
收藏

51CTO技術(shù)棧公眾號