1. 首页
  2. 技术博客
  3. 让Python虚拟环境轻松连接UXDB数据库

让Python虚拟环境轻松连接UXDB数据库

  • 邓志群
  • 发布于 2026-04-14
  • 167 次阅读

导语

在银河麒麟 OS 中搭建 Python 虚拟环境,安装配置 UXDB 的 Python 驱动,并用 Python 程序顺利连接 UXDB 数据库,这曾是 DBA、Python 开发者的「拦路虎」。现在,只需跟随本文一步步操作,就能省下半天的踩坑时间,轻松通关。

1 部署环境

  • 操作系统:银河麒麟桌面版 V10 SP1

  • CPU 架构:ARM64(aarch64)、x86_64

  • Python 环境:虚拟环境(venv 或 conda)

2 编译驱动程序,制作驱动文件

这一步是为了生成驱动需要的两类核心文件(.so 和 .py)。

2.1 编译前,请确认以下信息

  1. Python 虚拟环境: /usr/local/web/venv/

  2. 驱动包名称 : pycouxdb(2.7-3.7).tar.gz

  3. 用哪个用户操作:uxdb 用户

  4. UXDB 安装在哪里:/home/uxdb/uxdbinstall

2.2 使用 uxdb 用户编译

第 1 步:复制驱动包到服务器

# 把驱动包复制到指定目录,并修改属主为 uxdb 
cp pycouxdb(2.7-3.7).tar.gz /home/uxdb/files/
chown uxdb:uxdb /home/uxdb/files/pycouxdb(2.7-3.7).tar.gz

第 2 步:解压

cd /home/uxdb/files
tar -zxvf pycouxdb(2.7-3.7).tar.gz

解压后会生成一个文件夹:uxdb-python-UX-UXSQL

第 3 步:编译

cd uxdb-python-UX-UXSQL
python setup.py build_ext --ux-config /home/uxdb/uxdbinstall/dbsql/bin/ux_config install

如果遇到下面这种错误:

ImportError: No module named setuptools

别慌,请按下面两步解决:

# 1. 激活虚拟环境
source /usr/local/web/venv/bin/activate
​
# 2. 安装 setuptools
pip install --upgrade setuptools

然后重新执行上面的编译命令。

第 4 步:编译完成后,你会得到两类驱动文件

  • .so 文件:/home/uxdb/files/uxdb-python-UX-UXSQL/build/lib.linux-aarch64-cpython-38/pycouxdb/

  • .py 文件:/home/uxdb/files/uxdb-python-UX-UXSQL/lib/

这两个文件就是我们要的驱动文件,根据不同的系统环境和版本选择不同的驱动(如:lib.linux-aarch64-cpython-38),请记住它们的位置。

3 配置运行环境(让 Python 能找到驱动)

3.1 把驱动文件放到虚拟环境中

# 1. 在虚拟环境中创建驱动文件夹(注意:python3.8 根据实际情况修改)
mkdir -p /usr/local/web/venv/lib/python3.8/site-packages/pycouxdb
​
# 2. 把文件夹的属主改为 uxdb
chown uxdb:uxdb /usr/local/web/venv/lib/python3.8/site-packages/pycouxdb
​
# 3. 把编译好的 .so 和 .py 文件复制进去
cp /home/uxdb/files/uxdb-python-UX-UXSQL/build/lib.linux-aarch64-cpython-38/pycouxdb/*.so /usr/local/web/venv/lib/python3.8/site-packages/pycouxdb/
cp /home/uxdb/files/uxdb-python-UX-UXSQL/lib/*.py /usr/local/web/venv/lib/python3.8/site-packages/pycouxdb/

3.2 配置环境变量,非常重要!

编辑当前用户的家目录下的 .bashrc 文件:

vi ~/.bashrc

在文件末尾添加以下两项配置:

# 告诉系统去哪里找 UXDB 的动态库
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/uxdb/uxdbinstall/dbsql/lib
export LD_LIBRARY_PATH
​
# 每次打开终端自动激活 Python 虚拟环境
source /usr/local/web/venv/bin/activate

保存退出后,使配置生效:

source ~/.bashrc

如果你想使 root 用户也能连接数据库,请用 root 用户登录,同样修改 /root/.bashrc,添加上面两项配置。

为什么要加这两行?

  • 不加第一行 → 导入驱动时会报错:libuxsql.so.5: cannot open shared object file

  • 不加第二行 → 每次打开终端都要手动执行 source /usr/local/web/venv/bin/activate


4、测试配置是否成功

前提:uxdb 用户和 root 用户都已经按上面配置好了。

第 1 步:创建测试脚本

新建一个文件 python_test.py,内容如下:

import pycouxdb 
from pycouxdb import sql

# 连接数据库(请根据实际情况修改密码)
conn = pycouxdb.connect(
    database="uxdb",
    user="uxdb",
    password="123456",
    host="127.0.0.1",
    port="52025"
)
# database:数据库名称
# user:数据库中的用户名称
# password:user 的密码
# host:数据库服务器(可以为:ip, localhost)
# port:数据库的端口号

cur = conn.cursor()

# 创建测试表
cur.execute("""
CREATE TABLE IF NOT EXISTS t1 (
    id int PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);""")

# 插入数据
cur.execute("insert into t1(id, name) values(1, 'name001');");
cur.execute("insert into t1(id, name) values(2, 'name002');");
cur.execute("insert into t1(id, name) values(3, 'name003');");

conn.commit()

# 查询数据
cur.execute("select id, name from t1;")

rows = cur.fetchall()
colnames = [desc[0] for desc in cur.description]
print("列数:%d" % len(colnames))
print("列名:%s, %s" % (colnames[0], colnames[1]))

# 一次打印一条记录数据
for row in rows:
    print(row)

cur.close()
conn.close()

第 2 步:运行测试

python python_test.py

如果整个过程没有报错,并且在 Python 中执行 import pycouxdb 成功,说明驱动已安装就绪!

5 小结

国产数据库 + 国产操作系统的组合正在成为越来越多企业的标配。通过本文,你已经打通了国产环境下 Python 连接 UXDB 的关键一环。