FastAPI 未将数据保存到 MySQL 数据库

问题描述 投票:0回答:1

我正在创建一个包含用户数据库的数据库,并且我正在尝试通过Python开发的API(FastAPI)填充该表

我拥有的相关Python代码是:

class User(BaseModel):
    NOMBRE: str
    APELLIDOS: str
    USUARIO: str
    EMAIL: str
    NACIMIENTO: datetime.date
    SEXO: str
    ALTURA: float
    PESO: float

@app.post("/add_user")
def add_user(user: User):
    values = (user.NOMBRE, user.APELLIDOS, user.USUARIO, user.EMAIL, user.NACIMIENTO, user.SEXO, user.ALTURA, user.PESO)
    sql_query = "INSERT INTO Usuarios (Nombre, Apellidos, Usuario, Email, Nacimiento, Sexo, Altura, Peso) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"
    mycursor.execute(sql_query, values)
    return {"message": "Usuario Insertado"}

当我尝试通过 Postman 调用此 post 方法时,没有出现任何问题,但数据未添加到数据库中(查看图片)

Postman call

MySQL finds nothing

我错过了什么?!?!?!我对编程有点生疏,对 API/数据库编码相当陌生,我什至不知道要搜索什么或要测试什么。如果我遗漏任何信息,请告诉我。

MySQL Table Schema

我尝试将这些值一一包含在内,以防万一我格式错误,但运气没有改变。我不知道我做错了什么。

python mysql postman fastapi
1个回答
0
投票

您没有在函数中使用

commit()
方法,因此数据库中没有任何操作。

像这样更改你的函数:

@app.post("/add_user")
def add_user(user: User):
    values = (user.NOMBRE, user.APELLIDOS, user.USUARIO, user.EMAIL, user.NACIMIENTO, user.SEXO, user.ALTURA, user.PESO)
    sql_query = "INSERT INTO Usuarios (Nombre, Apellidos, Usuario, Email, Nacimiento, Sexo, Altura, Peso) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"
    mycursor.execute(sql_query, values)
    mycursor.commit()
    mycursor.close()
    return {"message": "Usuario Insertado"}

我还建议看看SQLAlchemy 您可以在这里找到更多信息https://fastapi.tiangolo.com/tutorial/sql-databases/

© www.soinside.com 2019 - 2024. All rights reserved.