在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個純Python編寫的輕量級數據庫

汽車電子技術 ? 來源:Python實用寶典 ? 作者:Ckend ? 2023-02-24 10:32 ? 次閱讀

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已經成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南進行安裝。

**(可選1) **如果你用Python的目的是數據分析,可以直接安裝Anaconda:Python數據分析與挖掘好幫手—Anaconda,它內置了Python和pip.

**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優點:Python 編程的最好搭檔—VSCode 詳細指南。

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

  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://tinydb.readthedocs.io/en/latest/usage.html

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

我們的文章到此就結束啦,如果你喜歡今天的Python 實戰教程,請持續關注Python實用寶典。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3799

    瀏覽量

    64388
  • 代碼
    +關注

    關注

    30

    文章

    4788

    瀏覽量

    68603
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84682
收藏 人收藏

    評論

    相關推薦

    【建議收藏】Python大全

    照相機、圖像處理、特征提取、格式轉換的簡介,可讀性強的接口(基于OpenCV)。1.DjangoFlask是輕量級的Web應用框架,使用Python
    發表于 09-06 15:58

    木棉花:輕量級偏好數據庫學習筆記--沈泳鑫

    輕量級偏好數據庫就全部完成了。結語 感興趣的可以步接步跟著編寫。更多學習資料學習筆記,請關注Awesome-HarmonyOS_木棉花
    發表于 09-04 14:30

    基于輕量級偏好數據庫,實現存儲在本地應用數據的訪問及操作

    1. 介紹輕量級偏好數據庫輕量級存儲,主要用于保存應用的些常用配置。它是使用鍵值對的形式來存儲數據的,保存
    發表于 10-09 14:43

    HarmonyOS數據庫的相關資料下載

    1、HarmonyOS數據庫篇之輕量級數據存儲HarmonyOS中的數據庫存儲主要分為3種形式:1. 輕量級數據存儲2. 關系型數據庫
    發表于 03-28 11:13

    深度剖析OpenHarmony輕量級數據存儲

    輕量級數據存儲的版本openharmony的輕量級數據存儲現有兩版本,但是harmonyOS的官網上只有
    發表于 03-31 14:45

    Android游戲開發之SQLite數據庫

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

    TinyDB輕量級數據庫有哪些特點呢

    TinyDB 是 Python 編寫輕量級數據庫
    的頭像 發表于 10-28 14:07 ?1467次閱讀

    Python編寫輕量級數據庫

    TinyDB的目標是降低小型 Python 應用程序使用數據庫的難度,對于些簡單程序而言與其用 SQL 數據庫,不如就用TinyDB, 因為它有如下特點:
    的頭像 發表于 10-28 14:16 ?1112次閱讀

    如何創建Sqlite數據庫

    如何創建Sqlite數據庫? Sqlite是輕量級、占用空間小、操作速度快的嵌入式數據庫
    的頭像 發表于 08-28 16:40 ?4463次閱讀

    輕量級數據庫有哪些

    輕量級數據庫有哪些 隨著互聯網和物聯網等新代信息技術的廣泛應用,數據庫系統也變得越來越重要。人們對于數據庫數據庫的可靠性、安全性和性能等要
    的頭像 發表于 08-28 16:41 ?5951次閱讀

    SQLite數據庫python的區別

    SQLite數據庫python的區別 SQLite是輕量級關系型數據庫管理系統,是
    的頭像 發表于 08-28 16:41 ?867次閱讀

    python有什么用 如何用python創建數據庫

    python有什么用 如何用python創建數據庫 Python種高級編程語言,可以用于開發各種類型的應用程序和工具。它的廣泛應用使它在
    的頭像 發表于 08-28 16:41 ?1176次閱讀

    python讀取數據庫數據 python查詢數據庫 python數據庫連接

    使用第三方,包括MySQLDB、sqlite3、psycopg2等。其中MySQLDB是Python連接MySQL數據庫
    的頭像 發表于 08-28 17:09 ?1827次閱讀

    TinyDB :Python編寫輕量級數據庫

    TinyDB 是 Python 編寫輕量級數據庫
    的頭像 發表于 10-21 10:22 ?999次閱讀

    輕量級數據庫有哪些類型

    關系型數據庫是目前最常見的數據庫類型,它將數據以表的形式存儲,并使用SQL語言進行數據的管理和查詢。雖然關系型數據庫通常較為龐大和復雜,但
    的頭像 發表于 12-20 11:29 ?1270次閱讀
    主站蜘蛛池模板: 好爽的视频黄| 依人成人| 成人免费播放视频777777| 男女在线观看视频| 在线看片地址| 三级黄色短视频| 黄色三级视频| 久久精品国产免费看久久精品| 国产精品久久福利网站| 欧美不卡一区| 四虎在线播放免费永久视频| 男人边吃奶边做视频免费网站 | 高清一区二区三区视频| 日韩高清一级| 天天舔天天| 老师在办公室被躁得舒服小说| 亚洲国产精品乱码在线观看97| 久久这里只有精品免费播放 | 免费视频在线播放| 天天操丝袜| 亚洲视频天天射| 性夜影院爽黄a爽免费视频| 日本色午夜| 丁香婷婷影院| 6080yy午夜不卡一二三区| 色噜噜狠狠色综合欧洲| 国产在线观看色| 欧美综合天天夜夜久久| 劳拉淫欲护士bd字幕| 免费一日本一级裸片在线观看| bt天堂资源种子在线| 免费三级pq| 一品毛片| 亚洲午夜精品久久久久久抢| 亚洲性夜| 婷婷五月在线视频| 国产农村一一级特黄毛片| 美妇乱人伦性| 五月天激激婷婷大综合丁香| 国产精品激情综合久久| 五月欧美|