我是 FastAPI 世界的新手,我正在創建一個 API 來獲取資料并將其發布到 MySQL 資料庫。我在互聯網上關注了幾個鏈接并開發了以下代碼
資料庫連接.py
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
sql_database_url="mysql://root:root@localhost:3306/first_db"
engine=create_engine(sql_database_url)
sessionLocal=sessionmaker(autocommit=False,bind=engine)
base=declarative_base()
主類.py
from fastapi import FastAPI,Query,Depends
from sqlalchemy import Column,String,Integer
from typing import Optional,List
from pydantic import BaseModel
from sqlalchemy.orm import Session
from DatabaseConnection import engine,sessionLocal,base
app=FastAPI()
class User(base):
__tablename__="users"
id=Column(Integer,primary_key=True,index=True)
name=Column(String(255),unique=True,index=True)
class UserSchema(BaseModel):
id:int
name:str
class Config:
orm_model=True
base.metadata.create_all(bind=engine)
@app.post("/create-user")
def createUser(userSchema:UserSchema):
user=User(id=userSchema.id,name=userSchema.name)
sessionLocal().add(user)
sessionLocal().commit()
return user
當我嘗試使用 UVICorn 運行此 API 時,我運行成功并且表也成功創建,但我通過正文發送的資料未添加到表中。
該表顯示已添加空值 \
我已經提到了鏈接
任何幫助將不勝感激。提前致謝
uj5u.com熱心網友回復:
感謝@anjaneyulubatta505 的幫助
,但我們需要進行以下更改以在資料庫中發布資料
@app.post("/create-user")
def createUser(userSchema:UserSchema):
user = User(id=userSchema.id, name=userSchema.name)
with Session(bind=engine) as session:
session.add(user)
session.commit()
return user
參考鏈接
- 鏈接1
- 來自 sqlAlChemy 的Link2
uj5u.com熱心網友回復:
您沒有將更改提交到資料庫。只需像下面這樣更改您的代碼即可使其正常作業。
# ... imports and other stuff
from DatabaseConnection import sessionLocal
@app.post("/create-user")
def createUser(userSchema:UserSchema):
user = User(id=userSchema.id, name=userSchema.name)
with sessionLocal() as session:
session.add(user)
session.commit()
return user
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/410319.html
標籤:
上一篇:無法訪問API端點?
