4.python+flask+SQLAlchemy+达梦数据库
1.liunx Centos7上通过docker部署了达梦数据库。从达梦官网下载的docker镜像。(可以参考前面的博文)2.windows上通过下载x86,win64位的达梦数据库,只安装客户端,不安装服务端。从达梦官网下载达梦数据库windows版。(可以参考前面的博文)这样就可以用windows的达梦客户端去连接centos7上达梦的服务端。
前提
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)

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