1.查看操作系统版本

cat /etc/*release*

python同步达梦数据库 python操作达梦数据库_python同步达梦数据库

2.查看主机已安装的python版本

python --version

 

python同步达梦数据库 python操作达梦数据库_python同步达梦数据库_02

 

3.下载dmPython安装包

到达梦网站“应用开发指南”的“Python语言”页面可以获取python驱动源码包,本地下载好后再上传到主机上,或者也可以直接在主机上用命令行方式下载

python同步达梦数据库 python操作达梦数据库_数据库_03

或者

4.解压压缩包

unzip python-126594-20201027.zip

python同步达梦数据库 python操作达梦数据库_python同步达梦数据库_04

5.安装 

cd python/dmPython_C/dmPython/

python setup.py install

python同步达梦数据库 python操作达梦数据库_数据库_05

会发现报错了,根据报错的大概意思是找不到达梦数据库软件安装的位置

到达梦数据库的安装目录下看看,一般驱动放在driver目录下,发现里面没有python目录,正好可以把下载解压后的python目录放进去

python同步达梦数据库 python操作达梦数据库_数据库_06

 

python同步达梦数据库 python操作达梦数据库_缩进_07

 

再次进入python目录安装试试

python同步达梦数据库 python操作达梦数据库_python同步达梦数据库_08

 

会发现还是会报同样的错误,想到这是用的root用户安装的,root用户下应该是没有配置达梦数据库的环境变量,验证一下看看

python同步达梦数据库 python操作达梦数据库_python_09

发现确实没有,添加达梦数据库的环境变量,然后再source即时生效,最后再安装试试

python同步达梦数据库 python操作达梦数据库_python_10

python同步达梦数据库 python操作达梦数据库_Python_11

python同步达梦数据库 python操作达梦数据库_缩进_12

 会发现中间会有一些警告,这些不影响,最终都完成安装了,所以当遇到那个报错后,最重要的是要配置好达梦数据库的环境

6.测试python连接

创建一个python脚本,脚本内容如下,然后给脚本执行权限,再执行看下是否能正常连接

#!/usr/bin/python
#coding:utf-8
import dmPython
try:
       conn = dmPython.connect(user='SYSDBA', password='Dameng123', server='localhost',  port=5237)
          cursor  = conn.cursor()
             print('python: conn success!')
                conn.close()
except (dmPython.Error, Exception) as err:
       print(err)

 

python同步达梦数据库 python操作达梦数据库_数据库_13

搜索了相关错误,这种一般是因为python对缩进非常敏感,是缩进不符合要求,若有遇到这种的,可以调整报错的行的缩进后再看下情况 

python同步达梦数据库 python操作达梦数据库_缩进_14

python同步达梦数据库 python操作达梦数据库_缩进_15

发现连接正常了

7.测试简单的创建、增删改查

测试方法和步骤6一样,脚本里添加了创建、增删改查的内容,脚本具体内容如下,注意每行的缩进,否则会报错:

#!/usr/bin/python
#coding:utf-8
import dmPython
try:
        conn = dmPython.connect(user='SYSDBA', password='Dameng123', server='localhost',  port=5237)
        cursor  = conn.cursor()
        print('python: connect success!')
        try:
#创建表
           cursor.execute ('create table sysdba.python_test(id int,name varchar(10))')
           print('python: create success!')
        except (dmPython.Error, Exception) as err:
           print(err)

        try:
#插入数据
             cursor.execute ("insert into sysdba.python_test values(10,'aa')")
             cursor.execute ("insert into sysdba.python_test values(20,'bb')")
             cursor.execute ("insert into sysdba.python_test values(30,'cc')")
             print('python: insert success!')
#删除数据
             cursor.execute ("delete from sysdba.python_test where id=10")
             print('python: delete success!')
#更新数据
             cursor.execute ("update sysdba.python_test set name='ww' where id=30")
             print('python: update success!')
#查询数据
             cursor.execute ("select name from sysdba.python_test")
             res = cursor.fetchall()
             for tmp in res:
                for c1 in tmp:
                    print c1

             print('python: select success!')
        except (dmPython.Error, Exception) as err:
             print(err)

        conn.close()
except (dmPython.Error, Exception) as err:
        print(err)

 

python同步达梦数据库 python操作达梦数据库_python_16

8.绑定变量测试

#!/usr/bin/python
#coding:utf-8
import dmPython
try:
    conn = dmPython.connect(user='SYSDBA', password='Dameng123', server='localhost',  port=5237)
    cursor  = conn.cursor()
    print('python:connect success!')
    try:
        #清空表数据
        cursor.execute ('delete from sysdba.python_test')
        print('python:delete success!')
    except (dmPython.Error, Exception) as err:
        print(err)
        try:
            #插入数据
            aa = [('test')]
            cursor.execute ("insert into sysdba.python_test(name) values(?)", aa)
            print('python: insert success!')
            #查询数据
            cursor.execute ("select name from sysdba.python_test")
            res = cursor.fetchall()
            for tmp in res:
                for c1 in tmp:
                    print c1
                    print('python: select success!')
        except (dmPython.Error, Exception) as err:
            print(err)
            conn.close()
except (dmPython.Error, Exception) as err:
            print(err)

 

python同步达梦数据库 python操作达梦数据库_python同步达梦数据库_17

注意:脚本代码中除了要注意缩进外,还需要注意每个层级关系,若层级缩进不对,也许不会报错,但同时也不会有结果返回,比如绑定变量这个测试,当插入数据那段try缩进更多,则只会执行连接和清空数据,下面的都不会执行,也同时不会有报错信息返回,注意不能正确执行的脚本和能正确执行脚本红框处的不同

python同步达梦数据库 python操作达梦数据库_Python_18

 

python同步达梦数据库 python操作达梦数据库_python同步达梦数据库_19

 最终测试也正常了