flask 增删改

news/2024/11/29 10:49:02/文章来源:https://www.cnblogs.com/luckyletop/p/18576057

单一入口文件

manage.py
# encoding: utf-8
import jsonfrom 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)"""
methodsurl:paramsget delete: argspost :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"}), 400try:id = int(id)except ValueError:return jsonify({"error": "ID must be an integer"}), 400userlist = 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 模拟mysqldbpymysql.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 requestsclass HttpApiTest:def test_get(self,url,data=None):res = requests.get(url,params=data)return res.textdef test_post(self,url,data=None):res = requests.post(url,data=data)return res.textif __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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/843319.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多模态遥感技术:智慧城市更新与表达的新路径

随着智慧城市建设的不断深入,多模态航空遥感技术正成为推动城市智慧化的关键力量。多模态航空遥感通过集成多种传感器和数据源,提供了丰富的地表信息,极大地提升了城市空间数据的准确性和应用价值。多模态航空遥感技术多模态航空遥感技术利用多种传感器,如全色相机、多光谱…

H5-9 表格

1、表格展示效果表格在数据展示方便面非常简单,并且表现优秀 2、表格组成与特点 行、列、单元格 单元格特点:通行等高、同列等宽。 3、表格标签表格:<table>行:<tr>列:<td> <table><tr><td>1</td><td>1</td>&l…

带CSS3动画效果的炫酷jquery返回顶部插件

gototop是一款轻量级、简单易用的jquery返回顶部插件。该jquery返回顶部插件在用户向下滚动页面一段距离之后,会以CSS3动画方式出现返回顶部按钮。点击返回顶部按钮之后,页面以平滑的方式滚动回顶部。在线演示 下载使用方法 在页面中引入jquery、jquery.gototop.min.js文件。…

基本分段存储管理方式

基本分段存储管理方式 前言:分段与分页基本类似,理解了分页此处不难 ​​ ‍一、分段 进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名(在低级语言中,程序员使用段名来编程),每段从 0 开始编址。 内存分配规则:以段为单位进行分配,每个段在…

Java反序列化 - CC6链 (代码审计)

一、漏洞简述: 相比较于CC6链,CC1链对jdk版本有较多的限制。 在 jdk_8u71版本之后,AnnotationInvocationHandler类中的readObject方法代码被修改,移除了原有的 setValue()方法,导致利用链断开。 jdk_8u65:jdk_8u71:二、CC6链分析: 1、利用逻辑: Hashmap.readObject() …

不透明的文档协作,正在毁掉你的团队效率

在团队协作中,我们经常面对这样的困境:多人编辑同一份文档时,如何确保内容的准确性和版本的一致性?这看似简单的问题,却常常导致效率低下、信息丢失,甚至团队内部的矛盾升级。 关键点在于“变更透明化与实时同步”。 传统方式依赖邮件传输或者分散的云存储,这不仅容易造…

工地渣土车AI智能识别管控系统

工地渣土车AI智能识别管控系统通过现场监控摄像头实时捕捉工地出入口的画面,工地渣土车AI智能识别管控系统能够准确识别出渣土车,判断其是否按规定进行了遮盖,一旦系统判定渣土车未按规定遮盖,立即触发警报并抓拍照片,能够及时将违规行为报告发送至企业平台。工地渣土车AI…

马尔科夫模型

马尔科夫模型(Markov Model) 是一种用于描述系统状态转移的概率模型,广泛应用于统计学、机器学习、自然语言处理、物理学等领域。它的核心假设是:未来的状态仅依赖于当前状态,而与过去的历史状态无关,这个假设被称为“马尔科夫性”或“无记忆性”。1. 马尔科夫过程 马尔科…

20222412 2024-2025-1 《网络与系统攻防技术》实验五实验报告

20222412 2024-2025-1 《网络与系统攻防技术》实验五实验报告 1.实验内容 (1)从besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式该域名对应IP地址IP地址注册人及联系方式IP地址所在国家、城市和具体地理位置 PS:使用who…

win10设置莫名其妙无法打开,或许可以这样解决

我尝试了网上的很多解决方法,很遗憾都没有成功。也许是故障原因不同,这些方法并不适用。 在重装系统之前或许还可以试试更新win10系统。 由于设置打不开,因此只能手动更新系统。 1.查看对应版本的最新更新情况:Windows 10 - release information | Microsoft Learn 下图为w…

Api流式导出大数据

API流式导出大数据 <?phpnamespace App\Admin\Exports;use App\Admin\Services\Statistics\ExaminationRecordsDataService; use App\Enums\ExaminationStatus; use Generator; use Maatwebsite\Excel\Concerns\FromGenerator; use Maatwebsite\Excel\Concerns\WithHeading…

无监督模板辅助点云形状对应网络

无监督模板辅助点云形状对应网络无监督点云形状对应旨在建立源点云和目标点云之间的逐点对应关系。现有方法通过计算点云之间的逐点特征相似度直接获得对应关系。然而,非刚性物体具有很强的变形能力和不寻常的形状,因此直接在具有非常规形状的点云之间建立对应关系是一个长期…