前提

1.liunx Centos7上通过docker部署了达梦数据库。从达梦官网下载的docker镜像。(可以参考前面的博文)

2.windows上通过下载x86,win64位的达梦数据库,只安装客户端,不安装服务端。从达梦官网下载达梦数据库windows版。(可以参考前面的博文)

这样就可以用windows的达梦客户端去连接centos7上达梦的服务端。

配置环境变量

安装好windows上的客户端后,需要配置环境变量:

各软件版本

python版本是3.6.5

安装dmPython

推荐使用源码安装,不要使用在线安装pip install dmPython的方式,会有问题。

D:\dmdbms\drivers\python\dmPython>python setup.py install

windows的客户端安装后,安装目录里就会有drivers这个目录,里面放着各种连接达梦数据库的驱动。然后进入到dmPython目录执行python setup.py install

这个时候可能会遇到一些问题:

1.可能会出现如下报错:

error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

解决办法,下载Microsoft Visual C++ Build Tools

建议安装2019版本(2019下载地址:Create a network-based installation - Visual Studio (Windows) | Microsoft Learn

下载2019版的原因是,它是支持python3.6.5这个版本,一定要注意版本对应。防止后面有问题。

 这里根据你自己windows系统的版本来选择

这样选择性安装可以避免安装几十个G没用的东西。

2.可能会出现如下报错:\link.exe failed with exit code 1120

解决办法:我遇到这个问题的原因就是python安装的版本是32位的,而windows安装的达梦客户端是64位的。因为在官网上下载的64位,导致安装出现这个问题。把python换成64位的即可。

安装SQLAlchemy_dm方言包 

注意SQLAlchemy_dm与SQLAlchemy版本对应关系

 

Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法

 windows上达梦客户端安装目录下/drivers/dpi目录下的dll文件

python代码操作

from flask import Flask, Response, json
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'dm+dmPython://DAVE:Password01@192.168.171.130:5236'
# 自动跟踪配置,已经废弃,默认不要开设置为False即可
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 设置显示底层执行的sql语句
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)


class T1(db.Model):
    __tablename__ = 'T1'
    CITY_ID = db.Column(db.String(3), primary_key=True)
    CITY_NAME = db.Column(db.String(40), nullable=False)
    REGION_ID = db.Column(db.Integer, nullable=False)


@app.route("/query_all")
def query_all():
    # 查询所有用户数据, 返回User列表,
    data = T1.query.all()
    response_data = []
    for item in data:
        info = dict()
        info['CITY_ID'] = item.CITY_ID
        info['CITY_NAME'] = item.CITY_NAME
        info['REGION_ID'] = item.REGION_ID
        response_data.append(info)

    return Response(json.dumps(response_data), mimetype='application/json')


if __name__ == '__main__':
    # with app.app_context():
    #     db.create_all()
    app.run(host="0.0.0.0", port=5000)




Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐