Skip to content

DamengDB/dmPython

Repository files navigation

dmpython

该仓库主要提供了支持 Python 连接达梦数据库的 Python 库。

主要功能

支持使用 Python 连接达梦数据库,通过 Python 接口操作数据库,进行创表、删表、数据增删改查等功能,并展示数据内容。

使用方法

dmPython 源码依赖 DM 安装目录或者 drivers 目录(drivers 目录为 DM 的驱动目录)中提供的 dpi 头文件。

安装前需要检查环境中是否存在 DM 安装目录或 drivers 目录,并设置 DM_HOME

export DM_HOME=/opt/dmdbms
#
export DM_HOME=/drivers

具体路径以实际环境为准,DM_HOME 路径下必须有 include 目录或者 dpi/include 目录。

Windows 安装

在 Windows 操作系统下安装 dmPython,只需要直接执行 exe 文件即可。

Windows 操作系统下生成 exe 文件操作如下:

  1. 进入到 dmPython 源码所在目录(setup.py 文件所在路径)。
  2. 执行命令:
python setup.py bdist_wininst
  1. dist 目录下会生成相关安装文件。

Linux 安装

  1. 进入到 dmPython 源码所在目录(setup.py 文件所在路径)。
  2. 执行命令:
python setup.py bdist_rpm
  1. dist 目录下会生成相关 rpm 包。
  2. 在 Linux 操作系统下使用 rpm 包安装 dmPython。安装和卸载命令参考如下:

安装:

rpm -ivh dmPython-2.1-7.1-py33-1.x86_64.rpm --nodeps

卸载:

rpm -e dmPython-2.1-1.x86_64

源码安装(Windows/Linux)

Windows 和 Linux 也可以直接使用源码安装,操作如下:

  1. 进入到 dmPython 源码所在目录(setup.py 文件所在路径)。
  2. 执行命令:
python setup.py install

其他可能有帮助的信息

生成安装包

Windows 平台生成安装包(exe):

python setup.py bdist_wininst

Linux 平台生成安装包(rpm):

python setup.py bdist_rpm

依赖问题处理

若安装过程中出现依赖问题,则:

rpm -ivh file.rpm --nodeps

Linux 安装命令:

rpm -ivh dmPython-1.1-7.1-py26-1.x86_64.rpm --nodeps

Linux 卸载命令:

rpm -e dmPython-1.1-1.x86_64

源码直接安装(不分平台):

python setup.py install

64 位平台安装

64 位平台安装时,需增加 DM64 宏:

  • 安装脚本 setup.py 中全局变量 defineMacros 使用 defineMacros = [('DM64', None),]
  • 否则,使用 defineMacros = []

平台执行上述命令时,需先进行如下准备工作:定义环境变量 DM_HOME

  • Windows 平台需要将其添加到环境变量 PATH 中。
  • Linux 平台则不需要。

指定为 DM 安装目录 bin 的上层目录,例如:

# Windows
DM_HOME=C:\dmdbms

# Linux
export DM_HOME=/opt/dmdbms

常见问题

WIN 平台可能遇到:Unable to find vcvarsall.bat

解决方案如下:

  1. 进入当前使用 Python 安装目录中的 Lib/distutils,找到文件 msvc9compiler.py
  2. 使用 UE 或其他文本编辑器打开 msvc9compiler.py
  3. 在文件中找到:
vc_env = query_vcvarsall(VSERSION, plat_spec)
  1. 根据本机安装的 VS 版本号,对应安装目录(如:C:\Program Files\Microsoft Visual Studio 10.0),修改为:
vc_env = query_vcvarsall(10, plat_spec)

WIN 平台执行 import dmPython 时可能遇到 ImportError

示例报错:

import dmPython
Traceback (most recent call last):
  File "", line 1, in
ImportError: DLL load failed: 找不到指定的模块

此时因为 dmPython 找不到动态库 dpi(Linux 为 libdmdpi.so,Windows 为 dmdpi.dlldmdpi.lib),需要到 dpi 所在目录执行或者配置环境变量指向 dpi 所在目录。

若有安装 DM,直接配置环境变量指向 bin 目录或者指向 drivers/dpi

Linux 示例:

export LD_LIBRARY_PATH=/opt/dmdbms/bin
#
export LD_LIBRARY_PATH=/drivers/dpi

Python 使用过程中遇到 undefined symbol: PyUnicodeUCS2_Format

此问题为编译 dmPython 的环境 UCS 编码与执行环境不匹配导致,常见情况:

  1. 在不同的操作系统环境中编译和使用 dmPython。
  2. 编译或安装 dmPython 的 Python 程序本身 UCS 编码与当前操作系统不一致。

这两种情况都与 dmPython 源码无关,检查当前环境即可。

解决:

  • 第一种:在同一台机子上编译和使用即可。
  • 第二种:一般是使用源码安装了 Python,然后再用 Python 去编译或安装 dmPython,因此需要检查在使用源码安装 Python 时使用的编码与操作系统是否一致。

源码安装 Python 参考命令如下:

./configure --prefix=$YOUR_PATH --enable-unicode=ucs4

--enable-unicode 选项指定成与操作系统一致的编码即可。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors