我收到了一个我需要用Python阅读的sqlite文件。
我可以使用应用程序" DB Browser for SQLite"打开文件。我可以看到表结构并在该应用程序中执行select语句。所以文件似乎没问题。 (我没有创建它,也不知道它是如何创建的。)
但是,当我尝试从Python中读取它时,我收到一个错误:
sqlite3.DatabaseError:文件已加密或不是数据库
logging
如果我用文本编辑器打开文件,那么第一个单词是" SQLite格式3"其次是不可读的文字。所以它是用版本3生成的?不确定是否需要将其转换为db文件?
我不知道从哪里开始。
答案 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
目录中的旧版本。