當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python sqlite3.connect用法及代碼示例

用法:

sqlite3.connect(database[, timeout, detect_types, isolation_level, check_same_thread, factory, cached_statements, uri])

打開與 SQLite 數據庫文件 database 的連接。默認情況下返回 Connection 對象,除非給出自定義 factory

database 是一個 path-like 對象,給出要打開的數據庫文件的路徑名(絕對或相對於當前工作目錄)。您可以使用":memory:" 打開與駐留在 RAM 中而不是磁盤中的數據庫的數據庫連接。

當一個數據庫被多個連接訪問,並且其中一個進程修改了數據庫時,SQLite 數據庫將被鎖定,直到該事務被提交。 timeout 參數指定連接應等待鎖消失多長時間,直到引發異常。超時參數的默認值為 5.0(五秒)。

對於isolation_level 參數,請參見Connection 對象的isolation_level 屬性。

SQLite 本身隻支持 TEXT、INTEGER、REAL、BLOB 和 NULL 類型。如果您想使用其他類型,您必須自己添加對它們的支持。這detect_types參數和使用自定義轉換器用module-level注冊register_converter()函數讓您輕鬆做到這一點。

detect_types 默認為 0(即關閉,不檢測類型),您可以將其設置為 PARSE_DECLTYPESPARSE_COLNAMES 的任意組合以打開類型檢測。由於 SQLite 行為,即使設置了 detect_types 參數,也無法檢測生成字段的類型(例如 max(data) )。在這種情況下,返回的類型是 str

默認情況下,check_same_threadTrue,隻有創建線程可以使用連接。如果設置 False ,則返回的連接可以在多個線程之間共享。當使用具有相同連接的多個線程時,寫入操作應由用戶序列化以避免數據損壞。

默認情況下,sqlite3 模塊使用其Connection 類進行連接調用。但是,您可以通過為factory 參數提供您的類來繼承Connection 類並使connect() 使用您的類。

有關詳細信息,請參閱本手冊的 SQLite 和 Python 類型部分。

sqlite3 模塊在內部使用語句緩存來避免 SQL 解析開銷。如果要顯式設置為連接緩存的語句數,可以設置cached_statements 參數。當前實現的默認設置是緩存 100 條語句。

如果uriTrue,database被解釋為URI帶有文件路徑和可選的查詢字符串。方案部分must"file:".路徑可以是相對或絕對文件路徑。查詢字符串允許我們將參數傳遞給 SQLite。一些有用的 URI 技巧包括:

# Open a database in read-only mode.
con = sqlite3.connect("file:template.db?mode=ro", uri=True)

# Don't implicitly create a new database file if it does not already exist.
# Will raise sqlite3.OperationalError if unable to open a database file.
con = sqlite3.connect("file:nosuchdb.db?mode=rw", uri=True)

# Create a shared named in-memory database.
con1 = sqlite3.connect("file:mem1?mode=memory&cache=shared", uri=True)
con2 = sqlite3.connect("file:mem1?mode=memory&cache=shared", uri=True)
con1.executescript("create table t(t); insert into t values(28);")
rows = con2.execute("select * from t").fetchall()

有關此函數的更多信息,包括已識別參數的列表,可以在 SQLite URI documentation 中找到。

使用參數 database 引發審計事件 sqlite3.connect

使用參數 connection_handle 引發審計事件 sqlite3.connect/handle

在 3.4 版中更改:添加了uri範圍。

在 3.7 版中更改:database現在也可以是path-like 對象,不僅僅是一個字符串。

在 3.10 版中更改:添加了sqlite3.connect/handle審計事件。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 sqlite3.connect。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。