[英]Python Berkeley DB/Sqlite
由於BerkeleyDB可以使用SQLite api,因此python可以使用sqlite模塊連接到BerkeleyDB。
這篇文章建議使用其他東西,但可能是在Api之前同步寫的。 Berkeley DB的最佳Python模塊?
可以獲得簡單的連接字符串。 如果有已知問題,請發帖。 我正在探索這個話題。
在linux和windows上使用python 2.7。
正如在這里建議的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')
在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
根據OracleBSDDB文檔 ,你可以強制BsdDB生成一個sqlite3替換庫,然后(理論上)你將能夠使用這個庫來代替標准的sqlite3庫,然后使用sqlite3 python模塊。
然而,使用支持SQLite API的BsdDB版本是根據SleepyCat許可證許可的 ,這將迫使您向Oracle支付費用或者是一個開源項目(這些解決方案都不是很糟糕,但您必須選擇) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.