」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 深入了解 Python 中的新模組 - dbm.sqlite3

深入了解 Python 中的新模組 - dbm.sqlite3

發佈於2024-11-08
瀏覽:995

A look into the new module in Python  - dbm.sqlite3

Python 中的 dbm 模組提供了一個簡單且有效率的介面來建立和操作持久鍵值儲存。它允許使用唯一鍵存儲和檢索數據,並且通常用於快取、會話管理和其他類似任務。

隨著Python 3.13.0的引入,dbm家族中新增了一個新模組-dbm.sqlite3。此模組利用強大的 SQLite 資料庫引擎為 dbm 模組提供後端,允許使用者在 SQLite 資料庫中儲存和檢索資料。可以使用任何 SQLite 瀏覽器或內建 SQLite CLI(命令列介面)開啟和修改產生的檔案。

使用 dbm.sqlite3 的主要優點是,與其他後端選項(例如 dbm.ndbm 或 dbm.gnu)相比,它提供了改進的效能和效率。這是由於底層 SQLite 引擎針對速度和可靠性進行了最佳化。

要使用dbm.sqlite3,您需要使用下列語句將模組匯入Python腳本:

import dbm.sqlite3

接下來,您可以使用 open() 方法開啟 SQLite 資料庫,該方法接受以下參數:

  1. filename – 要開啟的資料庫檔案的路徑。

  2. flag – 指定開啟資料庫的模式。可用選項有:

  • 'r'(預設):開啟現有資料庫以供讀取。
  • 'w':開啟現有資料庫進行讀寫。
  • 'c':開啟資料庫進行讀寫,如果尚不存在則建立它。
  • 'n':始終建立一個新的空資料庫,開啟以供讀寫。
  1. mode – 檔案的 Unix 檔案存取模式(預設值:八進位 0o666),僅在必須建立資料庫時使用。

以下是如何使用 dbm.sqlite3 開啟 SQLite 資料庫的範例:

db = dbm.sqlite3.open("mydatabase.db", flag="c") 

open() 方法傳回一個行為類似於映射的對象,這意味著它具有 get() 和 set() 等方法,分別用於檢索和儲存資料。它還支援用於關閉資料庫的 close() 方法和用於管理資料庫上下文的 with 語句。

您也可以透過使用connection()方法存取SQLite連接對象,直接使用SQL語句操作資料庫:

db = dbm.sqlite3.open("mydatabase.db", flag="w") 
conn = db.connection()
conn.execute("CREATE TABLE IF NOT EXISTS fruits (id INTEGER PRIMARY KEY, name TEXT, color TEXT)")
conn.execute("INSERT INTO fruits VALUES (1, 'Apple', 'Red')")
conn.commit() # save changes

在上面的程式碼中,我們首先以寫入模式開啟資料庫,並建立一個名為fruits的表,該表包含三列:id、name和color。然後,我們將一筆記錄插入表中,並使用 commit() 方法提交變更。

總之,Python 3.13.0 中的 dbm.sqlite3 模組提供了一種使用 SQLite 資料庫儲存和檢索資料的便捷且有效率的方法。這為開發人員在資料管理和持久性方面開闢了廣泛的可能性。

版本聲明 本文轉載於:https://dev.to/myexamcloud/a-look-into-the-new-module-in-python-3130-dbmsqlite3-24p0?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python import codecs import codecs import codecs 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有...
    程式設計 發佈於2025-07-02
  • 反射動態實現Go接口用於RPC方法探索
    反射動態實現Go接口用於RPC方法探索
    在GO 使用反射來實現定義RPC式方法的界面。例如,考慮一個接口,例如:鍵入myService接口{ 登錄(用戶名,密碼字符串)(sessionId int,錯誤錯誤) helloworld(sessionid int)(hi String,錯誤錯誤) } 替代方案而不是依靠反射...
    程式設計 發佈於2025-07-02
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-07-02
  • 如何在Java字符串中有效替換多個子字符串?
    如何在Java字符串中有效替換多個子字符串?
    在java 中有效地替換多個substring,需要在需要替換一個字符串中的多個substring的情況下,很容易求助於重複應用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    程式設計 發佈於2025-07-02
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,將常數列添加到Spark DataFrame,該列具有適用於所有行的任意值的Spark DataFrame,可以通過多種方式實現。使用文字值(SPARK 1.3)在嘗試提供直接值時,用於此問題時,旨在為此目的的column方法可能會導致錯誤。 df.withCo...
    程式設計 發佈於2025-07-02
  • 為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    使用php dateTime修改月份:發現預期的行為在使用PHP的DateTime類時,添加或減去幾個月可能並不總是會產生預期的結果。正如文檔所警告的那樣,“當心”這些操作的“不像看起來那樣直觀。 考慮文檔中給出的示例:這是內部發生的事情: 現在在3月3日添加另一個月,因為2月在2001年只有2...
    程式設計 發佈於2025-07-02
  • 如何使用node-mysql在單個查詢中執行多個SQL語句?
    如何使用node-mysql在單個查詢中執行多個SQL語句?
    在node-mysql node-mysql文檔最初出於安全原因最初禁用多個語句支持,因為它可能導致SQL注入攻擊。要啟用此功能,您需要在創建連接時將倍增設置設置為true: var connection = mysql.createconnection({{multipleStatement:...
    程式設計 發佈於2025-07-02
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-07-02
  • 如何處理PHP文件系統功能中的UTF-8文件名?
    如何處理PHP文件系統功能中的UTF-8文件名?
    在PHP的Filesystem functions中處理UTF-8 FileNames 在使用PHP的MKDIR函數中含有UTF-8字符的文件很多flusf-8字符時,您可能會在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    程式設計 發佈於2025-07-02
  • Java中如何使用觀察者模式實現自定義事件?
    Java中如何使用觀察者模式實現自定義事件?
    在Java 中創建自定義事件的自定義事件在許多編程場景中都是無關緊要的,使組件能夠基於特定的觸發器相互通信。本文旨在解決以下內容:問題語句我們如何在Java中實現自定義事件以促進基於特定事件的對象之間的交互,定義了管理訂閱者的類界面。 以下代碼片段演示瞭如何使用觀察者模式創建自定義事件: args...
    程式設計 發佈於2025-07-02
  • 在UTF8 MySQL表中正確將Latin1字符轉換為UTF8的方法
    在UTF8 MySQL表中正確將Latin1字符轉換為UTF8的方法
    在UTF8表中將latin1字符轉換為utf8 ,您遇到了一個問題,其中含義的字符(例如,“jáuòiñe”)在utf8 table tabled tablesset中被extect(例如,“致電。為了解決此問題,您正在嘗試使用“ mb_convert_encoding”和“ iconv”轉換受...
    程式設計 發佈於2025-07-02
  • C++中如何將獨占指針作為函數或構造函數參數傳遞?
    C++中如何將獨占指針作為函數或構造函數參數傳遞?
    在構造函數和函數中將唯一的指數管理為參數 unique pointers( unique_ptr [2啟示。通過值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法將唯一指針的所有權轉移到函數/對象。指針的內容被移至功能中,在操作...
    程式設計 發佈於2025-07-02
  • 如何正確使用與PDO參數的查詢一樣?
    如何正確使用與PDO參數的查詢一樣?
    在pdo 中使用類似QUERIES在PDO中的Queries時,您可能會遇到類似疑問中描述的問題:此查詢也可能不會返回結果,即使$ var1和$ var2包含有效的搜索詞。錯誤在於不正確包含%符號。 通過將變量包含在$ params數組中的%符號中,您確保將%字符正確替換到查詢中。沒有此修改,PD...
    程式設計 發佈於2025-07-02
  • Python中嵌套函數與閉包的區別是什麼
    Python中嵌套函數與閉包的區別是什麼
    嵌套函數與python 在python中的嵌套函數不被考慮閉合,因為它們不符合以下要求:不訪問局部範圍scliables to incling scliables在封裝範圍外執行範圍的局部範圍。 make_printer(msg): DEF打印機(): 打印(味精) ...
    程式設計 發佈於2025-07-02
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中3個Party Package將另一個PAXPANCE帶有導入式套件之間的另一個軟件包,並在導入式套件之間導入另一個軟件包。如迴聲消息所證明的那樣: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    程式設計 發佈於2025-07-02

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3