我正在编写一个简单的Python脚本,用于从sqlite3数据库中获取数据。我遇到以下错误:
sqlite3.DatabaseError: file is encrypted or is not a database
我发现这个错误是由sqlite3的版本问题引起的。在Mac(10.6.8)我现在需要使用的SQLite版本是3.6.12。我下载了SQLite 3.7.16.2,可以用该版本打开数据库。但是,如何告诉Python在该脚本中使用非标准的SQLite版本?
我正在使用
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
最终我会将Ubuntu用于该项目,但出于测试目的,我需要在该特定的Mac配置上运行脚本。 谢谢你的帮助!
答案 0 :(得分:2)
另一个选择是安装更新的Python。例如,当前的python.org Python 2.7.4安装程序(可用here)附带SQLite 3.7.13。
$ /usr/local/bin/python2.7
Python 2.7.4 (v2.7.4:026ee0057e2d, Apr 6 2013, 11:43:10)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version_info (3, 7, 13)
答案 1 :(得分:1)
您可以使用DYLD_LIBRARY_PATH
环境变量在搜索路径的前面放置替换sqlite .dyld的目录。见man dyld
。这类似于Linux上的LD_LIBRARY_PATH
。