0

我正在编写一个从 sqlite3 数据库中获取数据的简单 Python 脚本。我遇到以下错误:

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 配置上运行脚本。感谢您的帮助!

4

2 回答 2

2

另一种选择是安装更新的 Python。例如,当前的 python.org Python 2.7.4 安装程序(可在此处获得)附带 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)
于 2013-04-15T03:29:57.413 回答
1

您可以使用DYLD_LIBRARY_PATH环境变量将替换 sqlite .dyld 的目录放在搜索路径的前面。见man dyld。这类似于LD_LIBRARY_PATH在 Linux 上。

于 2013-04-15T02:48:26.800 回答