python 使用FastAPI 框架表单数据导入数据库(三分钟!!!!)

使用 FastAPI 和 MySQL 实现简单的用户信息保存功能

在构建现代 Web 应用时,后端通常需要与数据库进行交互。本文将介绍如何使用 FastAPI 框架与 MySQL 数据库结合,实现一个简单的用户信息保存功能。我们将通过 FastAPI 提供的表单数据接口,将用户提交的用户名和密码存储到 MySQL 数据库中。

环境准备

在开始之前,你需要安装以下依赖项:

FastAPI:用于构建 Web API。

pymysql:Python MySQL 数据库连接器,用于与 MySQL 进行交互。

uvicorn:用于运行 FastAPI 应用的 ASGI 服务器。
可以使用以下命令安装:

pip install fastapi pymysql uvicorn

项目结构
项目结构如下:

project/
    └── main.py          # FastAPI 应用
    └── requirements.txt # 项目依赖

FastAPI 应用与数据库连接
我们将创建一个 FastAPI 应用,并在其中使用 PyMySQL 来连接数据库。以下是实现的关键步骤:

数据库连接配置:我们将 MySQL 的连接信息存储在一个字典中,这样便于管理数据库连接。

定义 API 路由:我们创建一个 POST 路由,允许用户通过表单提交数据,接收用户的用户名和密码并将其保存到 MySQL 数据库中。
在这里插入图片描述

from fastapi import FastAPI, Form
import pymysql

# 创建 FastAPI 应用实例
app = FastAPI()

# 数据库连接配置
db = {
    "host": "localhost",  # 数据库主机地址
    "user": "xuantao",     # 数据库用户名
    "password": "xuantao", # 数据库密码
    "db": "school",       # 要连接的数据库名
    "charset": "utf8mb4",  # 字符编码
    "cursorclass": pymysql.cursors.DictCursor # 使用字典形式的游标
}

# 定义处理 POST 请求的路由,路径为 "/main_mysql/"
@app.post("/main_mysql/") 
async def save_data(username: str = Form(...), password: str = Form(...)):
    """
    接收表单提交的用户名和密码,并将数据保存到数据库中。

    Args:
        username (str): 通过表单传递的用户名.
        password (str): 通过表单传递的密码.

    Returns:
        dict: 返回操作结果信息,成功时返回 {"message": "success"},
              发生数据库错误时返回 {"message": f"Database error: {str(e)}"},
              发生其他未知错误时返回 {"message": f"Unexpected error: {str(e)}"}。
    """
    conn = None  # 初始化数据库连接为 None
    try:
        # 建立数据库连接
        conn = pymysql.connect(**db)
        with conn.cursor() as cursor:
            # 定义 SQL 插入语句
            sql = "INSERT INTO user (username, password) VALUES (%s, %s)"
            # 执行 SQL 语句,并传递用户名和密码作为参数
            cursor.execute(sql, (username, password))
            # 提交事务,将更改保存到数据库
            conn.commit()
        return {"message": "成功"}
    except pymysql.Error as e:
        # 若数据库操作出现错误
        if conn:
            # 回滚事务,撤销之前的操作
            conn.rollback()
        return {"message": f"Database error: {str(e)}"}
    except Exception as e:
        # 处理其他未知异常
        return {"message": f"Unexpected error: {str(e)}"}
    finally:
        # 确保在操作完成后关闭数据库连接
        if conn and conn.open:
            conn.close()

代码解析
数据库连接:pymysql.connect(**db) 用于连接到 MySQL 数据库,我们使用了一个字典存储连接的配置信息。通过 pymysql.cursors.DictCursor,我们可以将查询结果以字典的形式返回,这样便于处理。

表单数据接收:我们使用 FastAPI 的 Form 模块接收用户提交的表单数据。通过 POST 请求,username 和 password 会被接收到,并作为参数传递给 save_data 函数。

SQL 插入语句:我们使用 SQL 插入语句将用户名和密码插入到 MySQL 数据库中的 user 表。通过 cursor.execute() 执行 SQL,并通过 conn.commit() 提交事务。

错误处理:代码中使用了 try-except 语句来捕获数据库错误和其他未知错误。如果发生数据库错误,我们会回滚事务以撤销之前的操作。

启动应用
使用 Uvicorn 启动 FastAPI 应用,命令如下:
uvicorn main:app --reload 此命令会启动服务器,并在本地 http://127.0.0.1:8000 运行。你可以通过浏览器或者 API 客户端(如 Postman)向 /main_mysql/ 发送 POST 请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值