1. 安装ODBC驱动依赖

apt-get update
apt-get install -y unixodbc unixodbc-dev

2. 安装DM8(所需驱动都在安装包中)

2.1. 下载安装包

下载地址:https://eco.dameng.com/download/
根据平台自行选择需要的系统架构。这里我选择X86架构文件
在这里插入图片描述
下载后得到的安装包内容如下:
在这里插入图片描述
将 dm8_20250506_x86_rh7_64.iso 解压,会有如下安装包。将此安装包放至ubuntu服务器。
在这里插入图片描述

2.2. 安装DM8

2.2.1. 创建用户及用户组

DM8运行需要dmdba这个用户

groupadd dinstall
useradd -g dinstall -m dmdba
passwd dmdba

2.2.2. 执行安装脚本(命令行安装)

./DMInstall.bin -i console
  • 选择语言
    在这里插入图片描述
  • 输入DM8授权秘钥(这里我们只需要驱动程序,所以不需要设置秘钥,输入"n"试用版安装即可)
    在这里插入图片描述
  • 设置时区(这里选择:China)
    在这里插入图片描述
  • 选择安装模式(这里选择 1,典型安装,亲测试按官方说法使用Custom自定义安装,仅安装驱动,跑不起来。)
    在这里插入图片描述
选项安装类型说明
1Typical典型安装(推荐):安装数据库服务器、客户端、工具等大多数组件,适合第一次完整安装。
2Server仅安装数据库服务器组件,不包含客户端或图形工具,适合纯服务端使用。
3Client仅安装客户端工具,如管理工具和连接组件,适合只访问远程数据库的机器。
4Custom自定义安装:你可以手动选择要安装的具体模块,适合高级用户或有特殊部署需求的场景。
  • 设置安装目录(/opt/dm8)可根据自己需求修改
    在这里插入图片描述
  • 安装完成
    在这里插入图片描述

3. 配置驱动参数

3.1. 查看配置信息

odbcinst -j

在这里插入图片描述

3.2. 修改驱动配置参数

vi /etc/odbcinst.ini
[ODBC Data Sources]
DM ODBC DRIVER = DM ODBC DRIVER

[DM ODBC DRIVER]
Driver = /opt/dm8/bin/libdodbc.so

4. python脚本验证数据库连接

注意:python 环境需要提前自行安装,所需要扩展为 pip install --no-cache-dir pyodbc

Python 脚本:

import pyodbc

try:
    # 连接信息
    server = "127.0.0.1"
    port = "5236"
    username = "dm8"
    password = "123456"  # 如果有其他密码请修改

    # 连接字符串
    conn_str = (
        f"DRIVER={{DM ODBC DRIVER}};"
        f"SERVER={server};"
        f"PORT={port};"
        f"UID={username};"
        f"PWD={password}"
    )
    
    print("尝试连接到达梦数据库...")
    conn = pyodbc.connect(conn_str)
    print("连接成功!")
    
    # 执行简单查询测试
    cursor = conn.cursor()
    cursor.execute("SELECT 1 FROM DUAL")
    result = cursor.fetchone()
    print(f"查询结果: {result}")
    
    cursor.close()
    conn.close()
    print("连接已关闭")
    
except Exception as e:
    print(f"连接失败: {str(e)}")

附Docker 版 构建Dockerfile

# 达梦数据库ODBC驱动支持
# 基于 Python 官方镜像,添加对达梦数据库的支持
FROM infiniflow/ragflow:v0.18.0

USER root
WORKDIR /ragflow

# 安装达梦数据库ODBC驱动依赖
RUN apt-get update && \
    apt-get install -y unixodbc unixodbc-dev &&\
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 添加组和用户
RUN groupadd dinstall && \
    useradd -g dinstall -m dmdba && \
    echo "dmdba:123456" | chpasswd

ADD ../docker/etc /etc
ADD ../docker/dm8 /opt/dm8

# 设置环境变量
ENV ODBCINI=/etc/odbc.ini
ENV ODBCSYSINI=/etc

# 安装 Python 依赖
RUN pip install --no-cache-dir pyodbc opensearch-py==2.8.0 -v && \
    pip list | grep opensearch

# 创建自定义的 opensearchpy 模块
RUN mkdir -p /usr/local/lib/python3.10/dist-packages/opensearchpy && \
    echo "# Import from opensearch_py package\ntry:\n    import sys\n    import os\n    # Try to find the opensearch_py package\n    paths = [p for p in sys.path if os.path.exists(os.path.join(p, 'opensearch_py'))]\n    if paths:\n        sys.path.insert(0, os.path.join(paths[0], 'opensearch_py'))\n    from opensearch_py import OpenSearch, NotFoundError, UpdateByQuery, Q, Search, Index, ConnectionTimeout\nexcept ImportError:\n    # If still cannot import, try another approach\n    from opensearch_py.opensearchpy import OpenSearch, NotFoundError, UpdateByQuery, Q, Search, Index, ConnectionTimeout\n\n# Export the names to make them available when importing this module\n__all__ = ['OpenSearch', 'NotFoundError', 'UpdateByQuery', 'Q', 'Search', 'Index', 'ConnectionTimeout']" > /usr/local/lib/python3.10/dist-packages/opensearchpy/__init__.py && \
    touch /usr/local/lib/python3.10/dist-packages/opensearchpy/__pycache__

# 创建软链接目录,确保能找到opensearchpy
RUN mkdir -p /ragflow/opensearchpy && \
    echo "from opensearchpy import *" > /ragflow/opensearchpy/__init__.py && \
    echo "/ragflow" > /usr/local/lib/python3.10/dist-packages/opensearchpy.pth

# 设置默认数据库类型为达梦
ENV DB_TYPE=dm

# 确保入口脚本有执行权限
RUN chmod +x /ragflow/entrypoint.sh

ENTRYPOINT ["/ragflow/entrypoint.sh"] 

评论区留言,获取DM8完整驱动包

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐