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

问题描述 投票:4回答:4

我创建了一个sqlite db并将其上传到托管。

然后我从我的脚本中检索它并尝试插入一些数据,但execute()返回一个

DatabaseError (file is encrypted or is not a database).

urllib.urlretrieve('http://%s/%s' % (HOST, NAME_DB), NAME_DB)
con = sqlite3.connect(NAME_DB)
cur = con.cursor()
cur.execute('insert into log(date, count, average) values(date("now"), ?, ?)', (1, 1.2))
con.commit()
con.close()

Traceback (most recent call last):
  File "mylog.py", line 17, in <module>
    cur.execute('insert into log(date, count, average) values(date("now"), ?, ?)', (1, 1.2)) 
sqlite3.DatabaseError: file is encrypted or is not a database

如果我使用sqlite CLI插入数据,则不会发生此类错误。请你帮助我好吗?

python sqlite
4个回答
8
投票

sqlite CLI和python sqlite API之间的版本不匹配?我再次从脚本而不是CLI创建了我的数据库。现在从脚本插入并选择工作,但不是从CLI。 $sqlite -version返回2.8.17,而python版本是2.7.3。


3
投票

我使用SQLite3库创建了一个由C ++代码创建的数据库时遇到了同样的问题,该数据库后来被Python 2.7版本的SQLite3访问。我无法在Python脚本中查询数据库。为了解决我的电脑上的问题,我更改了以下版本:

C:\ Python27 \ DLL文件\ sqlite3.dll

对于在C ++ Sqlite库目录中找到的版本。


0
投票

好吧,我遇到了同样的问题,正如Visionnaire所说,只需用sqlite3.dll替换pythonXX\DLLs中的sqlite3.dll,CLI sqllite文件夹最初包含sqlite3.exe,问题解决了


0
投票

我遇到了同样的问题,我认为我正在处理的sqlite3数据库出了问题。但它似乎,我不小心覆盖了另一个sqlite3.db文件(我的项目中存在),作为ASCII。我不知道错误来自另一个数据库。请注意 :)

© www.soinside.com 2019 - 2024. All rights reserved.