Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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 在没有写访问权限的情况下打开sqlite3数据库_Python_Sqlite_Permissions - Fatal编程技术网

Python 在没有写访问权限的情况下打开sqlite3数据库

Python 在没有写访问权限的情况下打开sqlite3数据库,python,sqlite,permissions,Python,Sqlite,Permissions,我试图从Python对SQLite数据库执行查询。问题是,我没有对数据库文件的写入权限,也没有对包含数据库文件的目录的写入权限 当我连接到数据库并执行SELECT查询时,会出现“无法打开数据库文件”错误。我试着听从建议,但没用。我猜SQLite在尝试创建锁文件时失败了 当我有对目录的写访问权,但没有对sqlite文件的写访问权时,我会遇到另一个错误——锁定错误。这是因为sqlite使用与db文件相同的权限创建shm和wal文件,这意味着我得到了无法写入的shm和wal文件,从而导致锁定错误 除了

我试图从Python对SQLite数据库执行查询。问题是,我没有对数据库文件的写入权限,也没有对包含数据库文件的目录的写入权限

当我连接到数据库并执行SELECT查询时,会出现“无法打开数据库文件”错误。我试着听从建议,但没用。我猜SQLite在尝试创建锁文件时失败了

当我有对目录的写访问权,但没有对sqlite文件的写访问权时,我会遇到另一个错误——锁定错误。这是因为sqlite使用与db文件相同的权限创建shm和wal文件,这意味着我得到了无法写入的shm和wal文件,从而导致锁定错误


除了将所有文件复制到我有完全访问权限的目录之外,还有其他方法吗?

您可以使用以下语法在读取模式下打开
sqlite3
连接:

con = sqlite3.connect('file:path/to/database.sqlite?mode=ro', uri=True)

您可以使用以下语法在读取模式下打开
sqlite3
连接:

con = sqlite3.connect('file:path/to/database.sqlite?mode=ro', uri=True)
报告说:

无法打开只读的WAL数据库。打开进程必须对与数据库关联的“-shm”wal索引共享内存文件具有写入权限(如果该文件存在),或者对包含数据库文件的目录具有写入权限(如果“-shm”文件不存在)

要允许对该数据库进行只读访问,某些具有写权限的用户需要将其更改为其他数据库。

说明:

无法打开只读的WAL数据库。打开进程必须对与数据库关联的“-shm”wal索引共享内存文件具有写入权限(如果该文件存在),或者对包含数据库文件的目录具有写入权限(如果“-shm”文件不存在)


要允许对该数据库进行只读访问,某些具有写权限的用户需要将其更改为其他用户。

这是我已经引用的答案。它不起作用。连接可能处于只读模式,但文件和目录需要可写。这不是正确的答案,但我一直在寻找答案。这是我已经引用的答案。它不起作用。连接可能处于只读模式,但文件和目录必须是可写的。这不是正确答案,但我正在寻找的是正确答案。如果我对文件夹具有写访问权限,但对文件没有写访问权限,则会创建-shm文件,但我对其没有写权限(sqlite只是复制db文件的权限)。这是一个bug,我想知道它是Python包装器中的bug还是sqlite本身的bug。从版本3.22(2018-01-22)开始,只读WAL数据库在某些条件下是受支持的:如果我对文件夹有写访问权限,但对文件没有写访问权限,则会创建-shm文件,但我没有对它的写权限(sqlite只是复制db文件的权限)。这是一个bug,我想知道它是Python包装中的bug还是sqlite本身的bug。从版本3.22(2018-01-22)开始,在某些条件下支持只读WAL数据库: