繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM