gpt4 book ai didi

python - 同一台服务器上的多个版本的 Sqlite3 for Python

转载 作者:行者123 更新时间:2023-12-05 05:58:33 24 4
gpt4 key购买 nike

在 Linux 服务器上,我有一些使用内置 sqlite3 模块的 Python 脚本(+ 一些从源代码构建的 Sqlite 扩展,详见 Upgrade Python's sqlite3 on Debian)。

对于另一个 Python 脚本,我需要一个 更新版本 的 Sqlite 共享库,而不是我在系统上已有的那个。原因:我需要Sqlite higher than 3.25.0 for Window Functions .

如果我安装它 from source here并执行 makemake install,它可能会覆盖服务器上此库的先前版本,并可能破坏使用它的其他操作系统工具。

您如何处理具有多个版本的 Sqlite 共享库的一般问题?

我认为 Python 虚拟环境不能用于这种情况,或者有可能吗?

注意:pip3 install --upgrade sqlite3不存在:我们不能像这样升级Python内置的sqlite3包。顺便说一下,我们可能不应该这样做,因为它可能会破坏一些使用 Python + sqlite3 的操作系统工具。

最佳答案

非常棘手,需要在您的脚本中做一些代码更改。

做什么:

  • 首先,检查 python 附带的 sqlite3 library 版本以防万一:

    python -c "import sqlite3; print(sqlite3.connect(':memory:').execute('SELECT sqlite_version();').fetchall())

    在我的电脑(python 3.8,windows)中,输出是 [('3.35.5',)] 这意味着 python 有 sqlite 3.35.5 库。我的系统中没有安装 sqlite:这是 python3.8 自带的库。

  • 如果您的 python sqlite3 库不是您需要的 :-( 您有另一种选择:您可以使用 pysqlite3 而不是 sqlite3 标准库。在这种情况下:

    1. 您需要使用与您要使用的版本匹配的 Sqlite3“合并”自行构建 pysqlite3 库(稍后会详细介绍)。
    2. 您需要安装库,并且...
    3. 您需要更改您的 python 脚本导入将 pysqlite3 导入为 sqlite3 # 而不是 sqlite3

好的,什么是“合并”以及如何构建 pysqlite3?

amalgamation是整个 sqlite3 库在一个 .c 文件中(带有 sqlite3.h 文件)。您可以从 sqlite3 下载页面获取它:sqlite3.36 amalgamation .

合并后,请按照 instructions to build statically pysqlite3 进行操作, 然后安装包。

现在您可以在代码中使用 pysqlite3。

关于python - 同一台服务器上的多个版本的 Sqlite3 for Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68458497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com