簡體   English   中英

配置 python sqlite3 模塊以使用不同的(較新版本)sqlite 系統庫(升級 sqlite)

[英]Configure python sqlite3 module to use different (newer version) sqlite system lib (Upgrade sqlite)

We need to use some of the newest sqlite feature like "UPDATE FROM", which is available from sqlite 3.33.0 ( https://www.sqlite.org/changes.html ).

在當前 debian docker 映像中,我們使用穩定(破壞)發行版,它具有舊版本的 sqlite 庫(名稱為 libsqlite3-dev)。

我從 in.sh 腳本中的源代碼本地編譯了 sqlite3,但我無法配置 pythons sqlite3 模塊以使用剛剛編譯的 sqlite 版本。

這是代碼的樣子:

# Download newer libsqlite3-dev with "UPDATE FROM" clause support
cd data_processing
wget "https://www.sqlite.org/2020/sqlite-amalgamation-3340000.zip" -O sqlite.zip
unzip sqlite.zip
rm sqlite.zip
mv sqlite-amalgamation-3340000 sqlite-3.34
cd sqlite-3.34
gcc shell.c sqlite3.c -lpthread -ldl -o sqlite3
# remove no longer needed file (everything else than just created sqlite3)
find . ! -name 'sqlite3' -type f -exec rm -f {} +
cd -
export PATH="$(pwd)/my_app/sqlite-3.34:$PATH"

在這里我們可以看到,將二進制文件添加到路徑是不夠的。 我還嘗試添加:

sys.path.insert(
    0,
    '/home/user/project/libs/my_app/sqlite-3.34'
)

進入 python 代碼,沒有成功。 有什么方法可以配置 sqlite3 python 模塊以使用系統上安裝的不同 sqlite 庫?

在您的要求中使用 pysqlite3 的二進制 package: https://github.com/coleifer/pysqlite3 ,添加

pip install pysqlite3-binary

在 python 代碼中,使用 pysqlite3:

import pysqlite3
    (...) conn = pysqlite3.connect(r"filename") (...)

而不是 sqlite3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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