Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以以只读模式打开锁定的sqlite数据库?_Python_Database_Sqlite - Fatal编程技术网

Python 是否可以以只读模式打开锁定的sqlite数据库?

Python 是否可以以只读模式打开锁定的sqlite数据库?,python,database,sqlite,Python,Database,Sqlite,我想用python-sqlite3打开chromium站点数据(在~/.config/chromium/Default中),但只要chromium正在运行,它就会被锁定,这是可以理解的,因为可以进行事务处理。是否有办法以只读模式打开数据库,确保chromium在使用数据库时不会破坏数据库的完整性?我认为这取决于事务设置的锁 SQLite独占事务锁定读写,即时和延迟事务仍允许读卡器 因此,这实际上取决于Chromium使用的事务 Chromium长时间持有数据库锁?讨厌!那真的不是个好主意。不

我想用python-sqlite3打开chromium站点数据(在~/.config/chromium/Default中),但只要chromium正在运行,它就会被锁定,这是可以理解的,因为可以进行事务处理。是否有办法以只读模式打开数据库,确保chromium在使用数据库时不会破坏数据库的完整性?

我认为这取决于事务设置的锁

SQLite独占事务锁定读写,即时和延迟事务仍允许读卡器


因此,这实际上取决于Chromium使用的事务

Chromium长时间持有数据库锁?讨厌!那真的不是个好主意。不过,这不是你的错


您可以尝试复制数据库文件(例如,使用系统实用程序
cp
),并使用该快照进行读取;SQLite将其所有提交状态保存在每个数据库的单个文件中。是的,有可能看到部分事务,但在Unix上肯定不会有锁问题,因为SQLite肯定不会使用强制锁。(由于Windows的锁定方案不同,这很可能不适用。)

这不一定是chromium的错。仔细观察,我发现了一条有用的消息,指出pysqlite库并没有为sqlite的所有功能提供接口,因为它符合DB-API。因此,当我用pysqlite打开数据库时,可能是在读写模式下,没有发言权。他指出APSW在启动连接时使用SQLITE_OPEN_READONLY标志。我现在来看看。这是我使用的解决方法,因为我迷失在15个浏览器标签中,试图找出并发访问Firefox的
places.sqlite
的“正确”解决方案。这和Firefox是一样的,同样的错误信息。只需修改你的程序,使其在副本上工作,享受更多的生活,而不必担心Python的
sqlite3
库。