python 跨源请求的Flask数据库API


一、导入模块

from flask import Flask,request
from utils.MysqlUtilss import Mysql
from flask_cors import CORS
import json


mysql = Mysql()
server = Flask(__name__,template_folder='../templates')
CORS(server,supports_credentials=True)

二、get与post获取获取到请求参数

1.在 Flask 中获取通过POST请求发送的 JSON 数据:
params=request.get_json()
2.在 Flask 中获取通过GET请求发送的查询参数:
params=request.args.to_dict()


三、 POST 请求的路由

@server.route(“/路径”,methods=[‘接口类型’])
def 自定义函数名():

第一步:获取前端参数

第二步:对前端参数进行校验是否正确

第三步:拼接sql

第四步:执行并返回结果

ruturn数据格式
res = {“success”: True,“message”: “新增成功”}
server.logger.info(f"res:{res}")
return json.dumps(res,ensure_ascii=False,cls=DateEncoder)

@server.route("/api/add_user",methods=['post'])
# @decorator_parse_token 登录锁
def add_user():
 # ###############获取前端参数##############################
    params = request.get_json()
    print(params)
 # ###############对前端参数进行校验是否正确#########################
 compliance_list = ['所有字段']
    check_com = []
    for i in params.keys():
        if i not in compliance_list:
            check_com.append(False)
        else:
            pass
    if False in check_com:
        return {"success": False, "message": "修改失败"}
    if "username" in params:pass
    else:return {"success": False, "message": "修改失败"}
 # ###################拼接sql#####################
	user=params["username"]
	params.pop("username")
	if not params:
	    return {"success": False, "message": "修改失败"}
	
	set_sql = ','.join(['%s="%s"' % (i, j) for i, j in params.items()])
	select_sql="UPDATE user SET %s WHERE username='%s'"%(set_sql,user)
	print(select_sql)
# ###################执行并返回结果#####################
	mysql.exec(select_sql)
	res = {"success": True,"message": "新增成功"}
    server.logger.info(f"res:{res}")
    return json.dumps(res,ensure_ascii=False,cls=DateEncoder)

四、 GET 请求的路由

return数据格式

res = {“success”: True, “data”: re}
return json.dumps(res,ensure_ascii=False,cls=DateEncoder)

@server.route("/api/get_user_list", methods=['get'])
# @decorator_parse_token
def get_user_list():
    """
    获取用户列表
    :return:
    """
    # ###############获取前端参数##############################
    params=request.args.to_dict()
    print(params)
    server.logger.info("paramsdsad111%s:" % params)

    if "current" in params:
        params.pop("current")
        params.pop("pageSize")
    # ###############对前端参数进行校验是否正确#########################
    compliance_list = ['所有字段']
    required_list = ['必填字段']
    check_com = []
    check_req = []
    for i in params.keys():
        if i not in compliance_list:
            check_com.append(False)
        elif i not in required_list:
            check_req.append(False)
        else:pass
    if False in check_com:
        return {"message":"字段不合规"}
    # if len(check_req) == len(params):
    #     return {"message": "必填项校验失败"}
    # ###################拼接sql#####################
    params["is_delete"] = "0"
    # where_sql = ' and '.join(['%s="%s"' % (i, j) for i, j in params.items()])
    where_sql = ' and '.join([f'{i} like "%{j}%"' for i, j in params.items()])
    print(where_sql)
    select_sql = f"select * from user where {where_sql} order by id desc"
    print(select_sql)
    # ###################查询并返回结果#####################
    re = mysql.fetchall(select_sql)
    # print(re)
    res={"success":True,"data":re}
    return json.dumps(res)

五、数据拼接方法

 (1)SELECT:
    where_sql = ' and '.join([f'{i} like "%{j}%"' for i, j in params.items()])
    select_sql = f"select * from user where {where_sql} order by id desc"
(2) UPDATE:
    set_sql = ','.join(['%s="%s"' % (i, j) for i, j in params.items()])
    select_sql="UPDATE user SET %s WHERE username='%s'"%(set_sql,user)
(3) INSERT:
     k=",".join([i for i in params.keys()])
     v=",".join([f"'{i}'" for i in params.values()])
     sql_key = f"insert into keywords ({k}) values ({v})"
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值