通過創建pydantic模型進行驗證提交資料
from pydantic import BaseModel class UserBase(BaseModel): email: str class UserCreate(UserBase): """ 請求模型驗證: email: password: """ password: str class Users(UserBase): """ 回應模型: id:email: is_active并且設定orm_mode與之兼容 """ id: int is_active: bool class Config: orm_mode = True
我們去通過傳入資料庫連接以及引數等進行資料庫操作,包括創建用戶、查詢用戶等,回傳的是orm模型物件,
from sqlalchemy.orm import Session # 通過id查詢用戶 def get_user(db: Session, user_id: int): return db.query(User).filter(User.id == user_id).first() # 新建用戶 def db_create_user(db: Session, user: UserCreate): fake_hashed_password = user.password + "notreallyhashed" db_user = User(email=user.email, hashed_password=fake_hashed_password) db.add(db_user) db.commit() # 提交保存到資料庫中 db.refresh(db_user) # 重繪 return db_user
接下來,我們就是在實際的介面中呼叫
app = FastAPI() # Dependency def get_db(): """ 每一個請求處理完畢后會關閉當前連接,不同的請求使用不同的連接 :return: """ db = SessionLocal() try: yield db finally: db.close() # 新建用戶 @app.post("/users/", response_model=Users) def create_user(user: UserCreate, db: Session = Depends(get_db)): return db_create_user(db=db, user=user) # 通過id查詢用戶 @app.get("/user/{user_id}", response_model=Users) def read_user(user_id: int, db: Session = Depends(get_db)): db_user = get_user(db, user_id=user_id) if not db_user: raise HTTPException(status_code=404, detail="User not found") return db_user
我們去啟動下,看下對應的介面,
uvicorn main:app --reload
我們去用postman去請求下
創建下用戶

查詢下賬戶

我們去查詢不存在的id

我們在用postman去請求的時候,發現

報錯了,我們看下如何處理

因為是唯一的索引,所以我們在去創建用戶的時候,要去判斷用戶是否存在,
我們先去創建一個通過email查詢用戶的
def get_user_emai(db:Session,email:str): return db.query(User).filter(User.email==email).first()
我們在創建用戶的時候,我們去判斷下
@app.post("/users/", response_model=Users) def create_user(user: UserCreate, db: Session = Depends(get_db)): db_crest=get_user_emai(db,user.email) if not db_crest: return db_create_user(db=db, user=user) raise HTTPException(status_code=200, detail="賬號不能重復")
如果不存在,我們就去創建,如果存在,我們就直接回傳,我們看下介面

我們看下最后的資料庫的存盤,

其實操作資料庫還是很簡單的,
文章首發在公眾號,歡迎關注,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325409.html
標籤:其他
上一篇:如何根據在angularjs中選擇下拉串列來隱藏div
下一篇:康威的生命游戲演算法不起作用
