0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TinyDB輕量級(jí)數(shù)據(jù)庫有哪些特點(diǎn)呢

數(shù)據(jù)分析與開發(fā) ? 來源:Python實(shí)用寶典 ? 作者:Ckend ? 2022-10-28 14:07 ? 次閱讀

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

TinyDB的目標(biāo)是降低小型 Python 應(yīng)用程序使用數(shù)據(jù)庫的難度,對(duì)于一些簡單程序而言與其用 SQL 數(shù)據(jù)庫,不如就用TinyDB, 因?yàn)樗腥缦绿攸c(diǎn):

輕便:當(dāng)前源代碼有 1800 行代碼(大約 40% 的文檔)和 1600 行測(cè)試代碼。

可隨意遷移:在當(dāng)前文件夾下生成數(shù)據(jù)庫文件,不需要任何服務(wù),可以隨意遷移。

簡單:TinyDB 通過提供簡單干凈的 API 使得用戶易于使用。

用純 Python 編寫:TinyDB 既不需要外部服務(wù)器,也不需要任何來自 PyPI 的依賴項(xiàng)。

適用于 Python 3.6+ 和 PyPy3:TinyDB 適用于所有現(xiàn)代版本的 Python 和 PyPy。

強(qiáng)大的可擴(kuò)展性:您可以通過編寫中間件修改存儲(chǔ)的行為來輕松擴(kuò)展 TinyDB。

100% 測(cè)試覆蓋率:無需解釋。

1.準(zhǔn)備

開始之前,需要先安裝它

pip installtinydb

2.簡單的增刪改查示例

初始化一個(gè)DB文件:

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

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

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

fromtinydb importTinyDB
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} fori inrange(2))

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

fromtinydb importTinyDB
db = TinyDB('db.json')
db.all()
# [{'count': 7, 'type': 'apple'}, {'count': 3, 'type': 'peach'}]
除了 .all() 我們還可以使用for循環(huán)遍歷db:
fromtinydb importTinyDB
db = TinyDB('db.json')
foritem indb:
print(item)
# {'count': 7, 'type': 'apple'}
# {'count': 3, 'type': 'peach'}
如果你需要搜索特定數(shù)據(jù),可以使用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'}]

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

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

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

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

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

3.高級(jí)查詢

除了點(diǎn)操作符訪問數(shù)據(jù),你還可以用原生的dict訪問表示法:

# 寫法1
db.search(User.country-code == 'foo')
# 寫法2
db.search(User['country-code'] == 'foo')
這兩種寫法是等效的。

另外在常見的查詢運(yùn)算符(==, <, >, ...)之外,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'}]}]
檢查單個(gè)項(xiàng)目是否包含在列表中:
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'))







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3882

    瀏覽量

    65538
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4822

    瀏覽量

    85817
收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    木棉花:輕量級(jí)偏好數(shù)據(jù)庫學(xué)習(xí)筆記--沈泳鑫

    之前,我們需要先了解一下數(shù)據(jù)庫什么作用,我們學(xué)完之后才能夠?qū)W以致用。顧名思義,數(shù)據(jù)庫肯定是具有存儲(chǔ)功能的。這輕量級(jí)偏好
    發(fā)表于 09-04 14:30

    基于輕量級(jí)偏好數(shù)據(jù)庫,實(shí)現(xiàn)存儲(chǔ)在本地應(yīng)用數(shù)據(jù)的訪問及操作

    1. 介紹輕量級(jí)偏好數(shù)據(jù)庫輕量級(jí)存儲(chǔ),主要用于保存應(yīng)用的一些常用配置。它是使用鍵值對(duì)的形式來存儲(chǔ)數(shù)據(jù)的,保存數(shù)據(jù)時(shí),需要給這條
    發(fā)表于 10-09 14:43

    HarmonyOS數(shù)據(jù)庫的相關(guān)資料下載

    1、HarmonyOS數(shù)據(jù)庫篇之輕量級(jí)數(shù)據(jù)存儲(chǔ)HarmonyOS中的數(shù)據(jù)庫存儲(chǔ)主要分為3種形式:1. 輕量級(jí)數(shù)據(jù)存儲(chǔ)2. 關(guān)系型數(shù)據(jù)庫
    發(fā)表于 03-28 11:13

    深度剖析OpenHarmony輕量級(jí)數(shù)據(jù)存儲(chǔ)

    一、輕量級(jí)數(shù)據(jù)存儲(chǔ)的版本openharmony的輕量級(jí)數(shù)據(jù)存儲(chǔ)現(xiàn)有兩個(gè)版本,但是harmonyOS的官網(wǎng)上只有一個(gè)輕量級(jí)數(shù)據(jù)存儲(chǔ)。二、應(yīng)用目錄的獲取數(shù)據(jù)存儲(chǔ)需要獲取到應(yīng)用的存放目錄,便
    發(fā)表于 03-31 14:45

    Android游戲開發(fā)之SQLite數(shù)據(jù)庫

    什么是SQLite,SQLite是一款輕量級(jí)數(shù)據(jù)庫,它的設(shè)計(jì)目的是嵌入式,而且它占用的資源非常少,在嵌入式設(shè)備中,只需要幾百KB!!!!!
    發(fā)表于 02-21 09:59 ?1964次閱讀
    Android游戲開發(fā)之SQLite<b class='flag-5'>數(shù)據(jù)庫</b>

    Access二級(jí)數(shù)據(jù)庫程序設(shè)計(jì)

    Access二級(jí)數(shù)據(jù)庫程序設(shè)計(jì)(電源技術(shù)應(yīng)用往期刊)-文檔為Access二級(jí)數(shù)據(jù)庫程序設(shè)計(jì)總結(jié)文檔,是一份不錯(cuò)的參考資料,感興趣的可以下載看看,,,,,,,,,,,,,
    發(fā)表于 09-17 14:33 ?1次下載
    Access二<b class='flag-5'>級(jí)數(shù)據(jù)庫</b>程序設(shè)計(jì)

    用于openharmony的輕量級(jí)、簡單的結(jié)構(gòu)化NoSQL數(shù)據(jù)庫

    用于openharmony的輕量級(jí)、簡單的結(jié)構(gòu)化 NoSQL 數(shù)據(jù)庫。 下載 依賴項(xiàng){ 實(shí)現(xiàn)“io.openharmony.tpc.thirdlib:ohos-NoSql:1.0.0” } 將數(shù)據(jù)
    發(fā)表于 04-13 10:05 ?2次下載

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

    TinyDB的目標(biāo)是降低小型 Python 應(yīng)用程序使用數(shù)據(jù)庫的難度,對(duì)于一些簡單程序而言與其用 SQL 數(shù)據(jù)庫,不如就用TinyDB, 因?yàn)樗腥缦?/div>
    的頭像 發(fā)表于 10-28 14:16 ?1224次閱讀

    PSoC NeoPixel Easy輕量級(jí)

    電子發(fā)燒友網(wǎng)站提供《PSoC NeoPixel Easy輕量級(jí).zip》資料免費(fèi)下載
    發(fā)表于 11-17 09:48 ?0次下載
    PSoC NeoPixel Easy<b class='flag-5'>輕量級(jí)</b><b class='flag-5'>庫</b>

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

    TinyDB 是一個(gè)純 Python 編寫的輕量級(jí)數(shù)據(jù)庫,一共只有1800行代碼,沒有外部依賴項(xiàng)。
    的頭像 發(fā)表于 02-24 10:32 ?999次閱讀

    SQLite數(shù)據(jù)庫特點(diǎn) SQLite數(shù)據(jù)庫簡單介紹

    語言,使得SQLite成為非常流行的數(shù)據(jù)庫管理系統(tǒng)。 SQLite數(shù)據(jù)庫特點(diǎn): 1. 輕量級(jí):SQLite數(shù)據(jù)庫是一種非常
    的頭像 發(fā)表于 08-28 16:40 ?5854次閱讀

    輕量級(jí)數(shù)據(jù)庫哪些

    輕量級(jí)數(shù)據(jù)庫哪些 隨著互聯(lián)網(wǎng)和物聯(lián)網(wǎng)等新一代信息技術(shù)的廣泛應(yīng)用,數(shù)據(jù)庫系統(tǒng)也變得越來越重要。人們對(duì)于數(shù)據(jù)庫數(shù)據(jù)庫的可靠性、安全性和性能等要
    的頭像 發(fā)表于 08-28 16:41 ?6281次閱讀

    數(shù)據(jù)庫應(yīng)用及其特點(diǎn) 數(shù)據(jù)庫數(shù)據(jù)的基本特點(diǎn)

    數(shù)據(jù)庫應(yīng)用及其特點(diǎn) 數(shù)據(jù)庫數(shù)據(jù)的基本特點(diǎn)? 數(shù)據(jù)庫應(yīng)用及其
    的頭像 發(fā)表于 08-28 17:22 ?3106次閱讀

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

    TinyDB 是一個(gè)純 Python 編寫的輕量級(jí)數(shù)據(jù)庫,一共只有1800行代碼,沒有外部依賴項(xiàng)。 TinyDB的目標(biāo)是降低小型 Python 應(yīng)用程序使用數(shù)據(jù)庫的難度,對(duì)于一些簡單程
    的頭像 發(fā)表于 10-21 10:22 ?1231次閱讀

    輕量級(jí)數(shù)據(jù)庫哪些類型

    輕量級(jí)數(shù)據(jù)庫是指具有小巧、靈活、高效的特點(diǎn),適用于小規(guī)模項(xiàng)目和嵌入式設(shè)備的數(shù)據(jù)庫管理系統(tǒng)。下面是對(duì)輕量級(jí)數(shù)據(jù)庫類型的詳細(xì)介紹,包括關(guān)系型數(shù)據(jù)庫
    的頭像 發(fā)表于 12-20 11:29 ?1574次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品