【ChatGPT】python fastapi mysql 实现 增删改查的代码

107 篇文章 13 订阅
5 篇文章 0 订阅

python fastapi mysql 实现 增删改查的代码

这段代码也是通过ChatGPT自动化实现的,技术实在是强悍!!!

以下是使用 Python FastAPI 和 MySQL 实现增删改查的示例代码:

from fastapi import FastAPI
from fastapi import HTTPException
from pydantic import BaseModel
import mysql.connector

app = FastAPI()

# 数据库配置
config = {
    'user': 'root',
    'password': 'password',
    'host': 'localhost',
    'database': 'test'
}

# 连接数据库
db = mysql.connector.connect(**config)
cursor = db.cursor()


# 用户数据模型
class User(BaseModel):
    id: int
    name: str
    age: int
    email: str


# 获取所有用户
@app.get("/users")
def read_users():
    query = "SELECT id, name, age, email FROM users"
    cursor.execute(query)
    result = cursor.fetchall()

    users = []
    for row in result:
        user = dict(zip(cursor.column_names, row))
        users.append(user)

    return users


# 获取单个用户
@app.get("/users/{user_id}")
def read_user(user_id: int):
    query = "SELECT id, name, age, email FROM users WHERE id = %s"
    cursor.execute(query, (user_id,))
    result = cursor.fetchone()

    if result is None:
        raise HTTPException(status_code=404, detail="User not found")

    user = dict(zip(cursor.column_names, result))
    return user


# 创建用户
@app.post("/users")
def create_user(user: User):
    query = "INSERT INTO users (id, name, age, email) VALUES (%s, %s, %s, %s)"
    values = (user.id, user.name, user.age, user.email)
    cursor.execute(query, values)
    db.commit()

    return {"message": "User created successfully"}


# 更新用户
@app.put("/users/{user_id}")
def update_user(user_id: int, user: User):
    query = "UPDATE users SET name = %s, age = %s, email = %s WHERE id = %s"
    values = (user.name, user.age, user.email, user_id)
    cursor.execute(query, values)
    db.commit()

    if cursor.rowcount == 0:
        raise HTTPException(status_code=404, detail="User not found")

    return {"message": "User updated successfully"}


# 删除用户
@app.delete("/users/{user_id}")
def delete_user(user_id: int):
    query = "DELETE FROM users WHERE id = %s"
    cursor.execute(query, (user_id,))
    db.commit()

    if cursor.rowcount == 0:
        raise HTTPException(status_code=404, detail="User not found")

    return {"message": "User deleted successfully"}

在这个示例代码中,我们使用了 FastAPI 和 Pydantic 库来定义路由和数据模型。我们还使用了 MySQL Connector 库来连接和操作 MySQL 数据库。

我们定义了一个 User 类来表示用户数据模型,并使用了 HTTPException 类来处理 HTTP 错误。在每个路由函数中,我们执行了 SQL 查询或修改操作,并将结果转换为 Python 字典返回。如果出现错误,我们使用 HTTPException 类来返回错误响应。

在实际开发中,需要根据具体情况进行调整和优化。这个示例代码可以作为一个基本的参考。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是Python操作MySQL增删改查示例代码: 首先需要安装MySQL相关库,使用pip命令安装pymysql库即可: ``` pip install pymysql ``` 接下来是示例代码,假设我们要操作的数据库名为test,其中包含一张名为user的表,表中包含id、name、age三个字段: ```python import pymysql # 连接MySQL数据库 conn = pymysql.connect( host='localhost', port=3306, user='root', password='123456', database='test' ) # 插入数据 def insert(): try: with conn.cursor() as cursor: sql = "INSERT INTO user (name, age) VALUES (%s, %s)" cursor.execute(sql, ('Tom', 20)) conn.commit() print('插入成功') except Exception as e: print(f'插入失败,错误信息:{e}') # 查询数据 def select(): with conn.cursor() as cursor: sql = "SELECT * FROM user" cursor.execute(sql) results = cursor.fetchall() for row in results: id = row[0] name = row[1] age = row[2] print(f'id={id}, name={name}, age={age}') # 更新数据 def update(): try: with conn.cursor() as cursor: sql = "UPDATE user SET age=%s WHERE name=%s" cursor.execute(sql, (25, 'Tom')) conn.commit() print('更新成功') except Exception as e: print(f'更新失败,错误信息:{e}') # 删除数据 def delete(): try: with conn.cursor() as cursor: sql = "DELETE FROM user WHERE name=%s" cursor.execute(sql, ('Tom',)) conn.commit() print('删除成功') except Exception as e: print(f'删除失败,错误信息:{e}') # 关闭数据库连接 conn.close() ``` 以上代码中,insert函数实现了向user表中插入一条数据,select函数实现了查询user表中所有数据并输出,update函数实现了将名为Tom的记录的age字段更新为25,delete函数实现了删除名为Tom的记录。 需要注意的是,每次执行完操作后都需要调用commit方法提交事务。另外,使用完数据库连接后一定要记得关闭,否则会导致资源浪费和连接池溢出等问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔都吴所谓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值