由于BerkeleyDB可以使用SQLite api,可以使用python使用sqlite模块连接到BerkeleyDB。
这篇文章建议使用别的东西,但可能是在Api之前同步写的。 Best Python module for Berkeley DB?
可以获得一个简单的连接字符串。如果有已知问题,请发帖。我正在探索这个话题。
在linux和windows上使用python 2.7。
答案 0 :(得分:4)
正如此处所建议https://forums.oracle.com/forums/thread.jspa?threadID=2302793 我已经尝试过使用python27的linux x86_64,这里是制作静态版本的步骤 我怀疑你的发行版有bdb sqlite api。
下载db-5.2.36.tar.gz
tar xzvf db-5.2.36.tar.gz
cd db-5.2.36/build_unix/
CFLAGS="-fPIC" ../dist/configure --enable-static --disable-shared --enable-sql-compat
# you need -fPIC to build the python ext of pysqlite
make
make prefix=/tmp/bdb install
从http://code.google.com/p/pysqlite/获取pysqlite2的副本,我使用了hg结帐。 在setup.cfg中添加build_ext部分(还有两行注释行可以重用它们)
include_dirs=/tmp/bdb/include
library_dirs=/tmp/bdb/lib
然后在pysqlite中执行cd:
python setup.py build
python setup.py install
或没有安装:
cd build/lib.linux-x86_64-2.7
python
from pysqlite2 import dbapi2
conn = dbapi2.connect('test.db')
c = conn.cursor()
c.execute('bla bla bla sql')
答案 1 :(得分:4)
在win32上构建和合并库很有挑战性:)
我的假设:
下载bdb和pysqlite(这次我有2.6.3)并将其放在c:\bdb
中,
解压缩bdb所以你将拥有
C:\bdb\db-5.2.36
进入C:\bdb\db-5.2.36\build_windows
选择Berkeley_DB_vs2010.sln
,
选择Static Release
作为配置并构建
您需要在
中拥有libdb52s.lib
和libdb_sql52s.lib
C:\bdb\db-5.2.36\build_windows\Win32\Static Release
现在在c:\bdb
解包pysqlite,进入C:\bdb\pysqlite-2.6.3
和
编辑setup.cfg
如下:
[build_ext]
include_dirs=C:\bdb\db-5.2.36\lang\sql\generated
library_dirs=C:\bdb\db-5.2.36\build_windows\Win32\Static Release
define=SQLITE_OMIT_LOAD_EXTENSION
一定要删除库=我必须将它们添加到setup.py, 因为静态链接我们需要指定多个库, 如果有人知道在setup.cfg中指定列表的方法,请告诉我:)
现在打开setup.py
转到第191行并替换:
libraries=libraries
使用:
libraries=['libdb_sql52s', 'libdb52s', 'ws2_32', 'advapi32'],
打开vs2010命令提示符(在visual studio工具菜单中)
进入c:\bdb\pysqlite
set DISTUTILS_USE_SDK=1
set MSSdk=1
python setup.py build
# ignore errors about manifests, just make sure _sqlite.pyd is built
# make same tests of the linux instructions
python setup.py bdist_wininst
will make the .exe installer in dist subdir
答案 2 :(得分:3)
根据OracleBSDDB documentation,你可以强制BsdDB生成一个sqlite3替换库,然后(理论上)你将能够使用这个库来代替标准的sqlite3库,然后使用sqlite3 python模块。
然而,使用支持SQLite API的BsdDB版本在SleepyCat License下获得许可,这将迫使您向Oracle支付费用或者是一个开源项目(这些解决方案都不是很糟糕,但你必须选择)。