由於BerkeleyDB可以使用SQLite api,因此python可以使用sqlite模塊連接到BerkeleyDB。Python Berkeley DB/Sqlite
這篇文章建議使用別的東西,但可能已經寫入了Api前同步。 Best Python module for Berkeley DB?
可以得到一個簡單的連接字符串。如果有問題,請發帖。我正在探討這個話題。
在linux和windows上使用python 2.7。
由於BerkeleyDB可以使用SQLite api,因此python可以使用sqlite模塊連接到BerkeleyDB。Python Berkeley DB/Sqlite
這篇文章建議使用別的東西,但可能已經寫入了Api前同步。 Best Python module for Berkeley DB?
可以得到一個簡單的連接字符串。如果有問題,請發帖。我正在探討這個話題。
在linux和windows上使用python 2.7。
由於這裏建議https://forums.oracle.com/forums/thread.jspa?threadID=2302793 我試圖在Linux x86_64的與python27,這裏的步驟,使靜態版本,因爲 我懷疑你的分佈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
得到pysqlite2副本從http://code.google.com/p/pysqlite/,我用的汞檢出。 在setup.cfg加入build_ext節(有可是由註釋行,你可以重新使用它們)
include_dirs=/tmp/bdb/include
library_dirs=/tmp/bdb/lib
然後光盤pysqlite:
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')
感謝您的Linux解決方案...我也需要一個Windows解決方案....「 – Merlin
根據OracleBSDDB documentation,你可以強制BsdDB生成一個sqlite3替換庫,然後(理論上)你將能夠使用這個庫替換標準的sqlite3庫,然後使用sqlite3 python模塊。
然而,請注意,使用支持SQLite API的BsdDB版本在SleepyCat License下許可,這將迫使您向Oracle支付費用或成爲一個開源項目(這些解決方案都不是非常糟糕,但您有選擇)。
關於收費,單獨使用BSDDB,我需要付費嗎? Isnt BSDDB開源,類似於MySQL。 – Merlin
@ Merlin:我通過鏈接到BsdDB許可證更新了我的答案。 –
在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
現在解壓pysqlite在c:\bdb
,進入C:\bdb\pysqlite-2.6.3
d 編輯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
有:
(在Visual Studio工具菜單)libraries=['libdb_sql52s', 'libdb52s', 'ws2_32', 'advapi32'],
打開VS2010命令提示符
去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
+1」在win32上構建和合並庫具有挑戰性:)「 – Merlin
我正在調查,爲什麼你認爲你連想這個?保持相同的API不會使數據庫文件本身更具可移植性,每次必須遷移到新主機時,必須重複非標準編譯過程。使用比Sqlite3更多功能的數據庫非常簡單,所有主要數據庫都有DBApi兼容綁定。 – SingleNegationElimination
您的調查答案:每個人都有自己的用例和開發路徑。 – Merlin
我在問你的用例,因爲你可能正在尋找一個解決方案來處理這個特定的案例。 – SingleNegationElimination