當前位置:編程學習大全網 - 編程語言 - Python數據庫API(DB API)

Python數據庫API(DB API)

雖然 Python 需要為操作不同的數據庫使用不同的模塊,但不同的數據庫模塊並非沒有規律可循,因為它們基本都遵守 Python 制訂的 DB API 協議,目前該協議的最新版本是 2.0,因此這些數據庫模塊有很多操作其實都是相同的。下面先介紹不同數據庫模塊之間的通用內容。

全局變量

Python 推薦支持 DB API 2.0 的數據庫模塊都應該提供如下 3 個全局變量:

apilevel:該全局變量顯示數據庫模塊的 API 版本號。對於支持 DB API 2.0 版本的數據庫模塊來說,該變量值通常就是 2.0。如果這個變量不存在,則可能該數據庫模塊暫時不支持 DB API 2.0。讀者應該考慮選擇使用支持該數據庫的其他數據庫模塊。

threadsafety:該全局變量指定數據庫模塊的線程安全等級,該等級值為 0~3 ,其中 3 代表該模塊完全是線程安全的;1 表示該模塊具有部分線程安全性,線程可以***享該模塊,但不能***享連接;0 則表示線程完全不能***享該模塊。

paramstyle:該全局變量指定當 SQL 語句需要參數時,可以使用哪種風格的參數。該變量可能返回如下變量值:

format:表示在 SQL 語句中使用 Python 標準的格式化字符串代表參數。例如,在程序中需要參數的地方使用 %s,接下來程序即可為這些參數指定參數值。

pyformat:表示在 SQL 語句中使用擴展的格式代碼代表參數。比如使用 %(name),這樣即可使用包含 key 為 name 的字典為該參數指定參數值。

qmark:表示在 SQL 語句中使用問號(?)代表參數。在 SQL 語句中有幾個參數,全部用問號代替。

numeric:表示在 SQL 語句中使用數字占位符(:N)代表參數。例如:1 代表壹個參數,:2 也表示壹個參數,這些數字相當於參數名,因此它們不壹定需要連續。

named:表示在 SQL 語句中使用命名占位符(:name)代表參數。例如 :name 代表壹個參數,:age 也表示壹個參數。

通過查閱這些全局變量,即可大致了解該數據庫 API 模塊的對外的編程風格,至於該模塊內部的實現細節,完全由該模塊實現者負責提供,通常不需要開發者關心。

數據庫 API 的核心類

遵守 DB API 2.0 協議的數據庫模塊通常會提供壹個 connect() 函數,該函數用於連接數據庫,並返回數據庫連接對象。

數據庫連接對象通常會具有如下方法和屬性:

cursor(factory=Cursor):打開遊標。

commit():提交事務。

rollback():回滾事務。

close():關閉數據庫連接。

isolation_level:返回或設置數據庫連接中事務的隔離級別。

in_transaction:判斷當前是否處於事務中。

上面第壹個方法可以返回壹個遊標對象,遊標對象是 Python DB API 的核心對象,該對象主要用於執行各種 SQL 語句,包括 DDL、DML、select 查詢語句等。使用遊標執行不同的 SQL 語句返回不同的數據。

遊標對象通常會具有如下方法和屬性:

execute(sql[, parameters]):執行 SQL 語句。parameters 參數用於為 SQL 語句中的參數指定值。

executemany(sql, seq_of_parameters):重復執行 SQL 語句。可以通過 seq_of_parameters 序列為 SQL 語句中的參數指定值,該序列有多少個元素,SQL 語句被執行多少次。

executescript(sql_script):這不是 DB API 2.0 的標準方法。該方法可以直接執行包含多條 SQL 語句的 SQL 腳本。

fetchone():獲取查詢結果集的下壹行。如果沒有下壹行,則返回 None。

fetchmany(size=cursor.arraysize):返回查詢結果集的下 N 行組成的列表。如果沒有更多的數據行,則返回空列表。

fetchall():返回查詢結果集的全部行組成的列表。

close():關閉遊標。

rowcount:該只讀屬性返回受 SQL 語句影響的行數。對於 executemany() 方法,該方法所修改的記錄條數也可通過該屬性獲取。

lastrowid:該只讀屬性可獲取最後修改行的 rowid。

arraysize:用於設置或獲取 fetchmany() 默認獲取的記錄條數,該屬性默認為 1。有些數據庫模塊沒有該屬性。

description:該只讀屬性可獲取最後壹次查詢返回的所有列的信息。

connection:該只讀屬性返回創建遊標的數據庫連接對象。有些數據庫模塊沒有該屬性。

總結來看,Python 的 DB API 2.0 由壹個 connect() 開始,壹***涉及數據庫連接和遊標兩個核心 API。它們的分工如下:

數據庫連接:用於獲取遊標、控制事務。

遊標:執行各種 SQL 語句。

掌握了上面這些 API 之後,接下來可以大致歸納出 Python DB API 2.0 的編程步驟。

操作數據庫的基本流程

使用 Python DB API 2.0 操作數據庫的基本流程如下:

調用 connect() 方法打開數據庫連接,該方法返回數據庫連接對象。

通過數據庫連接對象打開遊標。

使用遊標執行 SQL 語句(包括 DDL、DML、select 查詢語句等)。如果執行的是查詢語句,則處理查詢數據。

關閉遊標。

關閉數據庫連接。

下圖顯示了使用 Python DB API 2.0 操作數據庫的基本流程。

  • 上一篇:《街頭霸王2》讓遊戲廳老板崩潰的角色,菜雞玩家也能輕松通關
  • 下一篇:2023年安徽交通技術學校招生簡章收費標準電話地址
  • copyright 2024編程學習大全網