[英]Reading sqlite file with Python: sqlite3.DatabaseError: file is encrypted or is not a database
我收到了一个需要使用Python阅读的sqlite文件。
我可以使用应用程序“ SQLite的数据库浏览器”打开文件。 我可以看到表结构并在该应用程序中执行select语句。 因此该文件似乎还可以。 (我没有创建它,也不知道它是如何创建的。)
但是,当我尝试从Python读取它时,出现错误:
sqlite3.DatabaseError:文件已加密或不是数据库
import sqlite3 as lite
sqlite3.sqlite_version
# '3.6.21'
con = lite.connect('path\file.sqlite')
cur = con.cursor()
cur.execute('SELECT * from mytable')
# sqlite3.DatabaseError: file is encrypted or is not a database
如果我使用文本编辑器打开文件,则第一个单词为“ SQLite format 3”,后跟不可读的文本。 所以它是用版本3生成的? 不确定是否需要将其转换为db文件?
我不确定从这里去哪里。
当SQLite数据库采用与您的Python安装中的SQLite版本不兼容的新格式时,可能会出现此消息。
例如,我的库存Python报告:
>>> import sqlite3
>>> print sqlite3.sqlite_version
3.6.21
根据MSYS2 file
命令,我要打开的file
:
$ file testfile.sqlite
testfile.sqlite: SQLite 3.x database, last written using SQLite version 3008010
版本3008010 => 3.8.10。
在Windows上,您可以通过从SQLite下载页面下载新的预构建SQLite版本(选择与您的Python安装匹配的32位或64位)并将其sqlite3.dll
删除,来在Python安装中升级SQLite版本。 \\PythonX\\DLLs
目录中旧\\PythonX\\DLLs
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.