软件版本:
Python 3.7.3
Flask 1.1.1
SQLAlchemy 2.4.1
工具:
PyCharm
# Flask一些初始化
# 引包
from flask import Flask
app = Flask(__name__)
# 初始化数据库连接
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@127.0.0.1:3306/auto'
# 自动提交
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
# 跟踪修改
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# 查询时显示SQL语句
app.config['SQLALCHEMY_ECHO'] = True
# 初始化SQLAlchemy
# 引包
from flask_sqlalchemy import SQLAlchemy
# 创建db对象
db = SQLAlchemy()
# 初始化db
db.init_app(app)
#### 修改启动端口 IP ####
# 刚开始使用这种方案,发现行不通,网上查阅资料后发现有人说是 PyCharm问题
app.run(host="127.0.0.1",port=6000)
# 解决方案
# 编辑 Configurations 里的 Additional options
# 增加
--host=192.168.80.234 --port=6000
# 普通请求
@app.route('/testDemo',methods=['GET','POST'])
def testDemo():
# Get方式获取参数
id = request.args.get('id')
# Post方式获取参数
ip = request.form.get('ip')
# 图片上传
@app.route('/fileUpload', methods=['POST','GET'])
def fileUpload():
# 获取文件流
fileList = request.files
# 判断是否有文件
if len(fileList) >0:
file = fileList.get('file')
path = '/static/py/'+file.filename
f = open("."+path,'wb')
data = file.read()
f.write(data)
f.close()
return path
return ""
# 引入json包
import json
# 格式化返回
def returnBaseJson(data=None, totalCount='0',success='success'):
if data is None:
data = []
return json.dumps(
{
'totalCount':totalCount,
'success': success,
'resource': data
},
cls=MyEncoder,
default=str)
#
# 编码类
#
class MyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, bytes):
return str(obj, encoding='utf-8')
return json.JSONEncoder.default(self, obj)
###### 数据库交互 ####
class Config(db.Model):
# 表名
__tablename__ = 'config'
# 定义列对象
id = dbs.db.Column(db.Integer, primary_key=True) # id
name = dbs.db.Column(db.VARCHAR) # 设备唯一标识符
# 后面转json用的,不然会有小坑
def toString(self):
return {
"id": self.id,
'name': self.name,
}
# 查询操作
def getConfigList():
# 做查询操作
config = Config.query.all()
# 格式化
ds = [bean.toString() for bean in config]
# 返回固定格式
return http.returnBaseJson(ds)
# {"totalCount": "0", "success": "success", "resource": [{"id": 1, "name": "11111"}, {"id": 2, "name": "222222"}]}
# 普通查询
config = Config.query.all()
# 条件查询
config = Config.query.filter(Config.id == 2).all()
# 条件删除
Config.query.filter(Config.id == 2).delete()
# 修改
config = Config.query.filter(Config.id == 2).all()
if len(config) > 0:
count[0].name = "999"
# 插入
config = Config(name="56")
db.session.add(config)
db.session.commit()