我收到此错误:
sqlite3.DatabaseError: file is encrypted or is not a database
:
import sqlite3
con = sqlite3.connect('d:\Users\Vladi\AppData\Roaming\Mozilla\Firefox\Profiles\iz2stysq.default\places.sqlite')
cur = con.cursor()
data = cur.execute("SELECT input FROM moz_inputhistory")
是的道路是正确的,所以......出了什么问题?
答案 0 :(得分:3)
并非sqlite
和pysqlite
的所有版本都与firefox的sqlite格式兼容。
使用
检查您的sqlite
和pysqlite
版本和环境
import sys, sqlite3
print sys.version
print sqlite3.version
print sqlite3.sqlite_version
我在四个不同的环境中检查了相同的文件places.sqlite
,并在其中两个(cygwin和canopy)上获得了不同的错误。在debian
和sqlite-shell-win32-x86-3080801
上,它按预期工作。请参阅下面的摘要。
失败
sys.version -> 2.7.6 | 64-bit | (default, Jun 4 2014, 16:30:34) [MSC v.1500 64 bit (AMD64)]
sqlite3.version -> 2.6.0
sqlite3.sqlite_version -> 3.6.21
ERROR -> DatabaseError: file is encrypted or is not a database
在Windows 7上 cygwin 失败
sys.version -> 2.7.3 (default, Dec 18 2012, 13:50:09) [GCC 4.5.3]
sqlite3.version -> 2.6.0
sqlite3.sqlite_version -> 3.7.17
ERROR -> sqlite3.OperationalError: unable to open database file
debian 它有效!
sys.version -> 2.6.6 (r266:84292, Dec 27 2010, 00:02:40) [GCC 4.4.5]
sqlite3.version -> 2.4.1
sqlite3.sqlite_version -> 3.7.3
it works!
在 sqlite-shell-win32-x86-3080801 [Windows 7(MS-DOS-Box)] 上有效!
sqlite3.exe -version -> 3.8.8.1 2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55
it works!