使用Python读取sqlite文件:sqlite3.DatabaseError:文件已加密或不是数据库

时间:2015-09-03 22:38:53

标签: python sqlite

我收到了一个我需要用Python阅读的sqlite文件。

我可以使用应用程序" DB Browser for SQLite"打开文件。我可以看到表结构并在该应用程序中执行select语句。所以文件似乎没问题。 (我没有创建它,也不知道它是如何创建的。)

但是,当我尝试从Python中读取它时,我收到一个错误:

sqlite3.DatabaseError:文件已加密或不是数据库

logging

如果我用文本编辑器打开文件,那么第一个单词是" SQLite格式3"其次是不可读的文字。所以它是用版本3生成的?不确定是否需要将其转换为db文件?

我不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

当SQLite数据库的新格式与Python安装中的SQLite版本不兼容时,可能会出现此消息。

例如,我的股票Python报告:

>>> import sqlite3
>>> print sqlite3.sqlite_version
3.6.21

根据MSYS2 file命令,我尝试打开的文件是:

$ file testfile.sqlite
testfile.sqlite: SQLite 3.x database, last written using SQLite version 3008010

版本3008010 => 3.8.10。

在Windows上,您可以通过从SQLite Download Page(选择32位或64位以匹配您的Python安装)下载新的预构建SQLite版本来就地升级Python安装中的SQLite版本并删除其sqlite3.dll代替您\PythonX\DLLs目录中的旧版本。