flask 增删改

单一入口文件

manage.py
# encoding: utf-8
import json

from flask import Flask, jsonify, request
from flask_cors import CORS
from database import db,r
from sqlalchemy import text
from config import *
# 实例化flask对象
app = Flask(__name__)
# 配置转码
app.config['JSON_AS_ASCII'] = False
# 配置跨越
CORS(app, cors_allowed_origins="*")

# 配置mysql数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://{}:{}@{}:{}/{}'.format(mysql_user,mysql_password,mysql_host,mysql_port,mysql_db)
# 自动提交sql请求
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

# 初始化操作
db.init_app(app)

"""
methods
    url:params
    get delete: args
    post :data
"""
# 配置路由
@app.route('/', methods=['GET'])
def index():
    id = request.args.get('id', None)
    print('请求的默认参数{}'.format(id))
    userlist = db.session.execute(text("select * from user")).fetchall()
    # row._mapping 用于获取查询结果的键值对,从而确保每个 row 对象可以被正确地转换为字典。
    data = [dict(row._mapping) for row in userlist]

    return jsonify({"data": data})

# 新建用户
@app.route('/user/add', methods=['POST'])
def add_user():
    data = request.get_json()
    db.session.execute(text("insert into user(email,password) values(:email,:password)"), data)
    db.session.commit()
    # 字典转json字符串
    json_data = json.dumps(data)
    r.set('userlist', json_data)
    return jsonify({"msg": "success"})

# 删除用户
@app.route('/user/del', methods=['POST'])
def del_user():
    data = request.get_json()
    db.session.execute(text("delete from user where id=:id"), data)
    db.session.commit()
    return jsonify({"msg": "success"})

# 更新用户
@app.route('/editUser', methods=['POST'])
def editUser():
    data = request.get_json()
    db.session.execute(text("update user set email=:email,password=:password where id=:id"), data)
    db.session.commit()

    return jsonify({"msg": "success"})

@app.route('/user/query', methods=['GET'])
def query_user():
    try:
        id = request.args.get('id', None)

        if id is None:
            return jsonify({"error": "ID parameter is required"}), 400
        try:
            id = int(id)
        except ValueError:
            return jsonify({"error": "ID must be an integer"}), 400
        userlist = db.session.execute(text("select * from `user` where id=:id"), {"id": id}).fetchall()

        data = [dict(row._mapping) for row in userlist]
        return jsonify({"data": data})

    except Exception as e:
        return jsonify({"error": str(e)}), 500

# redis 查询
@app.route('/redis/query', methods=['POST'])
def redis_query():
    data = request.get_json()
    userlist = r.get('userlist')
    data = json.loads(userlist)
    return jsonify({"data": data})

# 启动flask
if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)

数据库

# -*- coding: utf-8 -*-

from flask_sqlalchemy import SQLAlchemy
import pymysql

# 通过pymysql 模拟mysqldb

pymysql.install_as_MySQLdb()

# 实例化mysql对象
db = SQLAlchemy()

import redis

# 实例化redis对象



r = redis.Redis(host='localhost', port=6379, db=5,decode_responses=True)

配置文件

# -*- coding: utf-8 -*-

mysql_user = 'root'
mysql_password = '123456'
mysql_host = '127.0.0.1'
mysql_port = 3306
mysql_db = 'social'

测试文件

# -*- coding: utf-8 -*-

import requests

class HttpApiTest:
    def test_get(self,url,data=None):

        res = requests.get(url,params=data)

        return res.text
    def test_post(self,url,data=None):
        res = requests.post(url,data=data)
        return res.text


if __name__ == '__main__':
    httpapi = HttpApiTest()
    res = httpapi.test_get('http://127.0.0.1:5000/',data={'id':'123'})
    res2 = httpapi.test_post('http://127.0.0.1:5000/user/user/add',data={'id':'123'})
    # res1 = httpapi.test_post('http://127.0.0.1:5000/user/update_user',data={'id':'123'})
    # print(res1)
posted @ 2024-11-29 10:47  乐乐乐乐乐乐樂  阅读(27)  评论(0)    收藏  举报
jQuery火箭图标返回顶部代码