访问具有多个连接的sqlite数据库

xZi*_*ise 1 python sqlite

我想从多个实例访问相同的SQLite数据库.

我尝试了两个Python shell,但在另一个连接上显示新条目时没有得到真正一致的结果.这实际上是否有效或仅仅是侥幸(或者是我的误解)?

我使用以下代码片段:

>>> import sqlite3
>>> conn = sqlite3.connect("test.db")
>>> conn.cursor().execute("SELECT * from foo").fetchall()
>>> conn.execute("INSERT INTO foo VALUES (1, 2)")
Run Code Online (Sandbox Code Playgroud)

当然,我并不总是添加新条目.

Dre*_*ess 9

这不是侥幸,只是对如何处理连接的误解.来自文档:

当多个连接访问数据库,并且其中一个进程修改数据库时,SQLite数据库将被锁定,直到提交该事务为止.timeout参数指定连接在引发异常之前等待锁定消失的时间.timeout参数的默认值为5.0(五秒).

要查看其他连接commit()的更改,您必须从execute()命令中进行更改.再次,从文档:

如果不调用此方法,则自上次调用commit()以来所执行的任何操作都不会从其他数据库连接中看到.如果您想知道为什么没有看到您写入数据库的数据,请检查您是否忘记调用此方法.