7

我创建了一个 sqlite 数据库并将其上传到主机。

然后我从我的脚本中检索它并尝试插入一些数据,但是 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 插入数据,则不会发生此类错误。请你帮助我好吗?

4

4 回答 4

10

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

于 2013-09-03T21:01:49.150 回答
2

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

C:\Python27\DLLs\sqlite3.dll

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

于 2014-08-18T18:42:18.347 回答
0

好的,我遇到了同样的问题,正如 Visionnaire 所说,只需将最初包含的 CLI文件夹中sqlite3.dllpythonXX\DLLs替换为,问题就解决了sqlite3.dllsqllitesqlite3.exe

于 2015-09-05T16:12:23.027 回答
0

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

于 2018-07-04T11:00:42.077 回答