教程二:使用Aestate软件定制开发供应商操作数据库
-------------------------------------------------------------------------------------------------------------------
前言
大家使用python软件定制开发供应商实现了很多个功能方法,但是只能一个个文件执行去操作,不是很方便。我们可以搭建一个web服务,通过接口方式对外输出功能方法。
目前使用作为web服务框架。
一、开始使用Flask
在我们的下创建一个py文件,此处命名为cx_server.py,代码如下:
- # Cx 初始化启用文件-py
- print("启动Cx Python服务...")
-
- from flask import Flask
- import json
- from flask import jsonify
- # 内部服务(自己提供的功能方法类)
- from services import area_service
-
- app = Flask(__name__)
- # 返回json数据中文乱码解决
- app.config['JSON_AS_ASCII'] = False
-
- @app.route('/')
- def index():
- return "Cx Python服务启动成功..."
-
- @app.route('/getAreaList')
- def getAreaList():
- data = json.loads(area_service.getAreaList())
- return jsonify({"data":data})
-
- if __name__ == '__main__':
- app.run()
注:其中的area_service在上一章有具体实现,只需要将上章中的逻辑封装为一个getAreaList方法即可。
方便大家参考我这边把代码贴出来。
area_service.py
- from base.entity.area import Area
- import pandas
-
- def getAreaList():
- # 一定要先实例化
- area = Area()
- # 查询多条
- r2 = area.find_many("select a.*,coalesce(c.bank,'') bank from mcam_area a left join mcam_bankorder c on a.id = c.id")
- return r2.to_json()
二、注意事项
1.需要引入flask,若根据之前教程一安装方式可以不用下载flask,在安装时就已经预置了大量成熟的工具包,在此处只需要from flask import Flask即可。
2.flask作为服务在返回json数据时,会默认将中文转成Unicode编码格式,解决方案:
在根目录启动服务文件cx_server.py中添加配置:
app.config['JSON_AS_ASCII'] = False
3.cx_server.py在这个文件中,通过app.run()启动时,会出现错误提示:
WARNING: This is a development server. Do not use it in a production deployment.
解决方案:换一个启动方式,如下 :
在cx_server.py文件中引入
from gevent import pywsgi
- if __name__ == '__main__':
- # 启动方式一
- # server = pywsgi.WSGIServer(('0.0.0.0',8085),app)
- # server.serve_forever()
-
- # 启动方式二
- app.run(
- port=8085,
- debug=True
- )
使用 启动方式一则不会有错误提示了。