Skip to content
On this page

與資料庫對話 ( 範例 CRUD ) II

Create 創建 (POST)

增加1筆 item 的方法。

py
def add_item(db: Session, addItem:schema.create_item):
    item = model.UserCreate(
        email=addItem.email,
        password=addItem.password
    )
    db.add(item)
    db.commit()
    db.refresh(item)
    return item
py
import pydantic import BaseModel
class UserBase(BaseModel)
    email:str

class UserCreate(UserBsae)
    password:str
py
@app.post('/path',status_code=201)
def create_item(sc_item:schema.UserCreate, db:Session=Depends(get_db)):
    # 先確認是否重複
    add_data_=crud.check_email(db, email=sc_item.email)
    if add_data:
        raise HTTPExcption(status_code=404, detail="資料庫已建檔")
    return crud.add_item(db=db, addItem=sc_item)

如果要在 item 裡加入第二層的方法:

py
py
py

add_singleselsec_single

總結:

  1. def 定義 create 函式操作時需與 schema 物件類別(class)的欄位互相配合。
  2. 需增加函式確認避免資料重複。
  3. 承2. 增加判斷式的後續返回動作。

Update 更新 (PUT)(PATCH)

py
@app.put('/path/{id}')
def update_item(id:str,payload:schema.schema,db:Session=Depends(get_db)):
    query_db=db.query(models.)
    return 'update item'

TIP

def update_item(所選的id , 定義操作.操作方法, 資料庫): 資料表=選擇資料表(資料表名稱).篩選(資料表內的id==所選的id)

Delete 刪除 (DELETE)

刪除階段可暫時不需要再使用response_mode

py
@app.delete('/path/{id}')
def del_item(id:int, db:Session=Depends(get_db)):
    select_id=db.query(models.Item).filter(models.Item.id==id).first()
    if select:
        db.delete(select_id)
        db.commit()
        db.close
        return '已刪除 item!!'
    else:
        return  {"mssage":f"找不到id:{id}資料"}
py
def del_item(db:Session, id:int):
    select_id=db.query(models.Item).filter(models.Item.id==id).first()
    db.delete(select_id)
    db.commit()
    db.close()
    return '已刪除 item!!'
py
@app.delete('/path/{id}')
def delete_item(item_id:int, db:Session=Depends(get_db)):
    # 先使用id來找看看資料是否存在
    find_Item=crud.read_one(db, id=item_id)
    if find_Item:
        return crud.del_item(db, id=item_id)
    else:
        return {"mssage":f"找不到id:{item_id}資料"}

del_id

刪除方法的總結:

  1. 先挑出要刪除的 id。
  2. 判斷 id 是否還存在資料庫內。
  3. 回饋判斷後的結果: 刪除 或 找不到id。