簡體   English   中英

Python Berkeley DB / Sqlite

[英]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上構建和合並庫是具有挑戰性的:)

我的假設:

  • python27(我有ActiveState python但python.org應該沒問題)在c:\\ python27中
  • 視覺工作室2010專業(我認為快遞也應該工作)

下載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.liblibdb_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM