如何使用Python Flask和MySQL创建管理用户的REST API

news2024/11/30 2:43:19

部分数据来源:ChatGPT 

引言

        在现代化的应用开发中,数据库是一个非常重要的组成部分。关系型数据库(例如:MySQL、PostgreSQL)在这方面尤其是很流行。Flask是一个Python的web框架,非常适合实现REST API。在这篇文章中,我们将介绍如何使用Python Flask和MySQL创建一个管理用户的REST API。如果你是一个新手,这篇文章将很适合你。

在这篇文章中,我们将:

  • 安装所需的软件和工具
  • 创建Python Flask应用程序
  • 实现一个REST API

安装所需的软件和工具

在开始之前,您需要确保已经安装了以下软件:

  • Python(在写这篇文章的时候,最新版是Python 3.8)
  • MySQL数据库(在写这篇文章的时候,最新版是MySQL 8.0)

您还需要安装以下Python库:

  • Flask(pip install Flask
  • mysql-connector(pip install mysql-connector-python

创建Python Flask应用程序

我们现在准备开始编写Python代码。打开一个您喜欢的文本编辑器(如Visual Studio Code),创建一个新文件,我们将文件命名为app.py。在这个文件中,我们首先要导入所需的库和模块。这里,我们需要导入MySQL驱动程序和Flask库。

import mysql.connector
from flask import Flask, request, jsonify

接下来,我们需要连接到MySQL数据库。从这里,我们将创建一个连接到数据库(名为management_system)的名为mydb的数据库对象。我们需要指定MySQL服务器的用户名和密码。这将允许我们使用Python操作MySQL。

mydb = mysql.connector.connect(
    host="localhost",
    user="root",  # 替换为您的MySQL用户名
    password="password",  # 替换为您的MySQL密码
    database="management_system" # 数据库名称
)

现在,我们可以创建一个Flask应用程序对象。创建一个名为“app”的新Flask应用程序对象。

app = Flask(__name__)

在此之后,我们需要定义两个路由。一个用于创建/添加新用户,一个用于获取所有用户。使用装饰器@app.route()为应用程序定义路径。使用methods参数来定义允许的HTTP方法。对于创建用户的路由,我们使用POST方法,而对于获取所有用户的路由,我们使用GET方法。

@app.route('/users', methods=['POST'])
def create_user():
    # 从页面中获取用户信息
    name = request.json['name']
    email = request.json['email']
    phone = request.json['phone']

    # 使用MySQL驱动程序在MySQL数据库中插入新用户
    cursor = mydb.cursor()
    sql = "INSERT INTO user (name, email, phone) VALUES (%s, %s, %s)"
    val = (name, email, phone)
    cursor.execute(sql, val)
    mydb.commit()

    # 返回一个JSON响应以表示用户已成功添加
    return "User created successfully"

@app.route('/users/get', methods=['GET'])
def get_all_users():
    # 从MySQL数据库中获取所有用户信息
    cursor = mydb.cursor()
    sql = "SELECT * FROM user"
    cursor.execute(sql)
    users = cursor.fetchall()

    # 将所有用户信息存储在一个列表中
    user_list = []
    for user in users:
        user_list.append(user)

    # 返回以JSON格式表示所有用户的响应
    return jsonify(user_list)

现在,我们的Flask应用程序已经准备就绪。我们只需要使用以下命令在命令行中运行它:

python app.py

此命令将启动我们的Flask应用程序,并在本地主机上的端口5000上运行。您现在可以使用POST请求向/users路由添加新用户,也可以使用GET请求请求/users/get路由来获取所有用户的信息。

完整代码 

import mysql.connector
from flask import Flask, request,jsonify

app = Flask(__name__)

mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="management_system"
)


@app.route('/users', methods=['POST'])
def create_user():
    name = request.json['name']
    email = request.json['email']
    phone = request.json['phone']

    cursor = mydb.cursor()
    sql = "INSERT INTO user (name, email, phone) VALUES (%s, %s, %s)"
    val = (name, email, phone)
    cursor.execute(sql, val)
    mydb.commit()

    return "User created successfully"


@app.route('/users/get', methods=['GET'])
def get_all_users():
    cursor = mydb.cursor()
    sql = "SELECT * FROM user"
    cursor.execute(sql)
    users = cursor.fetchall()

    user_list = []
    for user in users:
        user_list.append(user)

    return jsonify(user_list)

if __name__ == '__main__':
    app.run(debug=True)

  

总结

        在本篇文章中,我们学习了如何使用Python Flask和MySQL数据库创建REST API来管理用户。我们首先安装了所需的软件和库,并连接到MySQL数据库。然后,我们创建了一个名为app的Flask应用程序对象,并定义了两个路由。一个用于添加新用户,一个用于获取所有用户信息。最后,我们启动了Flask应用程序并测试了我们的REST API。如果您是新手,可以通过此示例了解如何构建您的第一个REST API,尤其是在与MySQL有关的情况下。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NLP学习笔记六-lstm模型

NLP学习笔记六-lstm模型 上一篇我们讲的是simple RNN模型,那么其实lstm模型更像是simple RNN模型的改进或者变种。 对于lstm模型,我们先看下面一张图: 其实lstm模型的思想是建立在simple RNN模型上的,但是要更加贴近于显示&…

内网安全:内网渗透.(拿到内网主机最高权限 vulntarget 靶场 A)

内网安全:内网渗透.(拿到内网主机最高权限) 内网穿透又被称为NAT穿透,内网端口映射外网,在处于使用了NAT设备的私有TCP/IP网络中的主机之间建立连接的问题。通过映射端口,让外网的电脑找到处于内网的电脑。…

数据分析第19课pyecharts布局(基础图形绘制)

官网:https://pyecharts.org/#/zh-cn/global_options?id=legendopts%ef%bc%9a%e5%9b%be%e4%be%8b%e9%85%8d%e7%bd%ae%e9%a1%b9 不想每个属性方法的看,可以直接看gallery 官网的数据都是静态的,如果要做数据实时更新的,即做前后端结合时,会用到Vue框架,与后端连接,实现动…

Nacos架构与原理 - CAP一致性协议 ( Raft Distro)

文章目录 为什么 Nacos 需要⼀致性协议为什么 Nacos 选择了 Raft 以及 Distro从服务注册发现来看从配置管理来看为什么是 Raft 和 Distro ?Raft (CP模式)Distro (AP模式) Nacos ⼀致性协议的演进早期的 Nacos ⼀致性协议当前 Nacos 的⼀致性协…

[Python图像处理] 基于离散余弦变换的安全扩频数字水印

基于离散余弦变换的安全扩频数字水印 数字水印基于离散余弦变换的安全扩频数字水印实现安全扩频数字水印相关链接 数字水印 数字水印是可见的或不可见的标识码,这种标识码被永久嵌入图像中,并且即使在解码过后后仍存在于图像中。为了保证有效性&#xf…

Jetpack Compose 中在屏幕间共享数据的 5 种方案

1. 路由传参 Jetpack Compose 中路由传参的方式有很多种,具体可以参考 Jetpack Compose 中的导航路由 以下是最简单的路由传参测试代码: import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.…

Java开发框架:Spring介绍

Spring 概述特点Spring 程序遇到的问题与解决 概述 Spring 是 Java EE 编程领域中的一个轻量级开源框架,由 Rod Johnson 在 2002 年最早提出并随后创建,目的是解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。其中,轻量…

代理模式的运用

文章目录 一、代理模式的运用1.1 介绍1.2 结构1.3 静态代理1.3.1 火车站买票案例类图1.3.2 代码 1.4 JDK动态代理1.4.1 代码1.4.2 JDK动态代理的执行流程 1.5 CGLIB动态代理1.5.1 导包1.5.2 代码 1.6 三种代理的对比1.7 优缺点1.8 使用场景 一、代理模式的运用 1.1 介绍 由于…

从0开始搭建Hyperledger Fabric2.x环境(fabric2.5版本)

Hyperledger Fabric 2.5环境搭建 一.Linux环境准备 # root登录 yum -y install git curl docker docker-compose tree yum -y install autoconf autotools-dev automake m4 perl yum -y install libtool autoreconf -ivf # 安装jq相关包 cd /opt git clone --recursive https…

软考A计划-系统架构师-官方考试指定教程-(8/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Redis从入门到精通【进阶篇】之数据类型Stream详解和使用示例

文章目录 0.前言1. 基本概念1.1. Stream的结构1.2. 持久化1.3. Stream的消费者组 2.实现原理2.1. Stream的数据结构2.2. Stream的消息追加2.3. Stream的消费2.4. Stream的消费者组 3.Redis Stream底层原理3.1. 基数树(Radix Tree)3.2. listpacks小结 4.命…

数据清洗、数据处理入门!R语言我来了,数据不再零散!

一、引言 数据清洗和预处理是数据科学中必不可少的一部分,它们能够帮助我们准确地分析和预测未来趋势。如果你曾经尝试过进行分析或建模,你会发现数据往往不像我们所想象的那样干净、整洁。需要对数据进行仔细的检查、清理和处理,才能真正把…

JavaSE笔记(五)重制版

泛型程序设计 在前面我们学习了最重要的类和对象,了解了面向对象编程的思想,注意,非常重要,面向对象是必须要深入理解和掌握的内容,不能草草结束。在本章节,我们还会继续深入了解,从泛型开始&a…

delphi D11编程语言手册 学习笔记(P344-392) 接口/类操作

P344-365 接口 "接口" 的概念和 "类" 特别是 "抽象类" 近似, Delphi 之初并没有接口, 后来(Delphi 3)为了支持 COM 引入了接口, 再后来发展成为 Delphi 重要的语言特性. 使用 COM 步骤可能是这样的:     1.程序在使用组件之初, 先联系 "…

Java-API简析_java.util.ArrayList类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/131119289 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…

2023最新ChatGPT商业版4.8.8支持GPT4.0+AI绘画midjourney+实时语音识别输入+后台一键版本更新!

2023最新ChatGPT商业版4.8.8支持GPT4.0AI绘画midjourney永久更新! 1.网站系统源码介绍: 程序已支持ChatGPT4.0、Midjourney绘画、GPT3.5 API绘画、语音识别输入、用户会员套餐用户每日签到功能后台管理一键更新版本。支持手机电脑不同布局页面自适应。…

【MySQL 数据库】6、一篇文章学习【索引知识】,提高大数据量的查询效率【文末送书】

目录 一、索引概述二、索引结构(1) 不同类型的索引结构(2) 二叉树和红黑树(3) B 树(4) B树(5) Hash(6) 为什么InnoDB存储引擎选择使用Btree索引结构相对于二叉树,层级更少,搜索效率高; 三、索引的分类(1) 聚集索引和二级索引(2) 思考题 四、索…

STM32之FreeRTOS

目录 FreeRTOS 介绍 什么是 FreeRTOS ? 为什么选择 FreeRTOS ? FreeRTOS 资料与源码下载 祼机开发与 FreeRTOS 祼机开发: FreeRTOS: FreeRTOS 实现多任务的原理 二、移植 FreeRTOS 手动移植 使用CubeMX快速移植 快速移植流程…

基于Hadoop与Electron的京东商品评论词云统计系统

一、综合设计目的与要求 合肥工业大学软件工程专业《云计算、大数据技术与应用》课程综合设计报告。 爬取京东或淘宝某一商品的评论1000条,统计词频(使用MapReduce或HBase或Hive),并以词云的方式可视化呈现,最后设计为…

python-面向对象:三大特性高级特性

文章目录 前言一、面向对象三大特性:封装、继承、多态1.对象和类2.封装3.继承(1)重写父类方法(2)多继承(3)私有属性与私有方法 4.多态 二、三大特性的应用1.链表的封装2.栈的封装3.队列的封装4.二叉树的封装 三、高级特性1.类属性与实例属性2.类方法与静态方法3.pro…