Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
193 changes: 171 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,200 @@
# dmpython

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

## 主要功能

支持使用python连接达梦数据库,通过python接口操作数据库,进行一系列数据库中例如创表、删表、对于数据增删改查等功能,对于数据内容进行展示
支持使用 Python 连接达梦数据库,通过 Python 接口操作数据库,进行创表、删表、数据增删改查等功能,并展示数据内容

## 使用方法

dmPython源码依赖DM安装目录或者drivers目录(driver目录为DM的驱动目录)中提供的dpi头文件,安装前需要检查环境中是否存在DM安装或者drivers目录,并设置DM_HOME目录: export DM_HOME=/opt/dmdbms 或者export DM_HOME=/drivers 具体路径以实际环境为准,DM_HOME路径下面必须有include目录或者dpi/include目录
dmPython 源码依赖 DM 安装目录或者 drivers 目录(drivers 目录为 DM 的驱动目录)中提供的 dpi 头文件。

在Windows操作系统下安装dmPython只需要直接执行exe文件即可。Windows操作系统下生成exe文件操作如下: 1.进入到dmPython源码所在目录(setup.py文件所在路径) 2.执行命令:python setup.py bdist_wininst 3.在dist目录下会生成相关安装文件
安装前需要检查环境中是否存在 DM 安装目录或 drivers 目录,并设置 `DM_HOME`:

LINUX安装方法: 1.进入到dmPython源码所在目录(setup.py文件所在路径) 2.执行命令:python setup.py bdist_rpm 3.在dist目录下会生成相关rpm包 4.在Linux操作系统下使用rpm包安装dmPython。安装和卸载命令参考如下: 安装:rpm -ivh dmPython-2.1-7.1-py33-1.x86_64.rpm --nodeps 卸载:rpm -e dmPython-2.1-1.x86_64
```bash
export DM_HOME=/opt/dmdbms
# 或
export DM_HOME=/drivers
```

windows和linux也可以直接使用源码安装,操作如下: 1.进入到dmPython源码所在目录(setup.py文件所在路径) 2.执行命令:python setup.py install
具体路径以实际环境为准,`DM_HOME` 路径下必须有 `include` 目录或者 `dpi/include` 目录。

其他可能有帮助的信息
### Windows 安装

windows平台生成安装包(exe) python setup.py bdist_wininst
在 Windows 操作系统下安装 dmPython,只需要直接执行 exe 文件即可。

LINUX平台生成安装包(rprm) python setup.py bdist_rpm
Windows 操作系统下生成 exe 文件操作如下:

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

```bash
python setup.py bdist_wininst
```

3. 在 `dist` 目录下会生成相关安装文件。

### Linux 安装

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

```bash
python setup.py bdist_rpm
```

3. 在 `dist` 目录下会生成相关 rpm 包。
4. 在 Linux 操作系统下使用 rpm 包安装 dmPython。安装和卸载命令参考如下:

安装:

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

卸载:

```bash
rpm -e dmPython-2.1-1.x86_64
```

### 源码安装(Windows/Linux)

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

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

```bash
python setup.py install
```

## 其他可能有帮助的信息

### 生成安装包

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

```bash
python setup.py bdist_wininst
```

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

```bash
python setup.py bdist_rpm
```

### 依赖问题处理

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

```bash
rpm -ivh file.rpm --nodeps
linux安装命令: rpm -ivh dmPython-1.1-7.1-py26-1.x86_64.rpm --nodeps
```

Linux 安装命令:

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

Linux 卸载命令:

```bash
rpm -e dmPython-1.1-1.x86_64
```

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

```bash
python setup.py install
```

### 64 位平台安装

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

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

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

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

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

```bash
# 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. 在文件中找到:

```python
vc_env = query_vcvarsall(VSERSION, plat_spec)
```

4. 根据本机安装的 VS 版本号,对应安装目录(如:`C:\Program Files\Microsoft Visual Studio 10.0`),修改为:

```python
vc_env = query_vcvarsall(10, plat_spec)
```

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

示例报错:

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

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

linux卸载命令: rpm -e dmPython-1.1-1.x86_64
若有安装 DM,直接配置环境变量指向 `bin` 目录或者指向 `drivers/dpi`。

源码直接安装(不分平台) python setup.py install
Linux 示例:

64位平台安装时,需增加DM64宏: 安装脚本setup.py中全局变量defineMacros使用defineMacros = [('DM64', None),];否则,使用defineMacros = []。
```bash
export LD_LIBRARY_PATH=/opt/dmdbms/bin
# 或
export LD_LIBRARY_PATH=/drivers/dpi
```

平台执行上述命令时,需先进行如下准备工作: 定义环境变量DM_HOME,WINDOWS平台需要将其添加到环境变量PATH中,linux则不需要: 指定为DM安装目录bin的上层目录,如DM_HOME=C:\dmdbms 或者 export DM_HOME=/opt/dmdbms
### Python 使用过程中遇到 `undefined symbol: PyUnicodeUCS2_Format`

==============================》 WIN平台可能遇到如下问题: Unable to find vcvarsall.bat
此问题为编译 dmPython 的环境 UCS 编码与执行环境不匹配导致,常见情况:

解决方案如下: 进入当前使用python安装目录中Lib/distutils,找到文件msvc9compiler.py,使用UE或者其他文本编辑器将其打开。 在文件msvc9compiler.py中找到: vc_env = query_vcvarsall(VSERSION,plat_spec)
1. 在不同的操作系统环境中编译和使用 dmPython。
2. 编译或安装 dmPython 的 Python 程序本身 UCS 编码与当前操作系统不一致。

根据使用本机安装的VS的版本号,对应安装目录(如:C:\Program Files\Microsoft Visual Studio 10.0),则改为: vc_env = query_vcvarsall(10,plat_spec)
这两种情况都与 dmPython 源码无关,检查当前环境即可。

==============================》 WIN平台执行import dmPython时,可能会遇到如下问题
解决

import dmPython Traceback (most recent call last): File "", line 1, in ImportError: DLL load failed: 找不到指定的模块
- 第一种:在同一台机子上编译和使用即可。
- 第二种:一般是使用源码安装了 Python,然后再用 Python 去编译或安装 dmPython,因此需要检查在使用源码安装 Python 时使用的编码与操作系统是否一致。

此时因为dmPython找不到动态库dpi(linux为libdmdpi.so,windows为dmdpi.dll、dmdpi.lib),需要到dpi所在目录执行或者配置环境变量指向dpi所在目录; 若有安装DM,直接配置环境变量指向bin目录或者指向drivers/dpi。
源码安装 Python 参考命令如下:

linux为例:export LD_LIBRARY_PATH=/opt/dmdbms/bin或者export LD_LIBRARY_PATH=/drivers/dpi
```bash
./configure --prefix=$YOUR_PATH --enable-unicode=ucs4
```

==============================》 用户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选项指定成与操作系统一致的编码即可
`--enable-unicode` 选项指定成与操作系统一致的编码即可。