在Mac 10.6.8上更改Python 2.6使用的SQlite3版本

时间:2013-04-15 02:30:34

标签: python macos sqlite osx-snow-leopard

我正在编写一个简单的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配置上运行脚本。 谢谢你的帮助!

2 个答案:

答案 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