当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。