from pydantic import BaseModelclass BookCreateSchema(BaseModel): name: str price: float numbers: int category_id: intclass BookUpdateSchema(BaseModel): name: str | None = None price: float | None = None numbers: int | None = None category_id: int | None = None将前端返回添加的信息 直接添加到数据库中 4.修改数据@book_api.put("/{book_id}", summary="编辑修改图书")async def edit_book(book_id: int, form: BookUpdateSchema): """ 根据图书id修改图书信息,支持局部更新,不传的字段不会改动 book_id:需要修改的图书id,路径参数 form:前端提交的修改字段,字段全部可选 返回:修改成功或失败提示 """ return await BookService.update_book(book_id, form.model_dump())@staticmethod async def update_book(book_id: int, info: dict): """修改图书,自动过滤None空字段,只更新传入的参数""" update_info = {k: v for k, v in info.items() if v is not None} update_count = await Book.filter(id=book_id).update(**update_info) if update_count == 0: return {"code": 400, "msg": "图书不存在,修改失败"} return {"code": 200, "msg": "修改成功"}从前端返回两个值 一个是要修改的id另外一个是修改的数据 在请求体中 都可以为空None 先判断修改的数据是否存在 在判断我们要修改的数据都有哪些然后1进行update修改5.删除数据@book_api.delete("/{book_id}", summary="删除图书")async def delete_book(book_id: int): """ 根据图书id删除对应图书数据 book_id:待删除图书主键id 返回:删除成功/失败提示 """ return await BookService.delete_book(book_id)@staticmethod async def delete_book(book_id: int): """根据ID删除图书""" del_count = await Book.filter(id=book_id).delete() if del_count == 0: return {"code": 400, "msg": "图书不存在,删除失败"} return {"code": 200, "msg": "删除成功"}传要删除的数据id判断是否存在然后删除2.前端
OTA照推照装,不会触发任何校验冲突。三座大山推倒之后,真正值得看的问题才浮出水面——怎样的方案,能做到这些?
三位工程师在使用 ChatGPT 辅助工作时,将公司内部的源代码粘贴到了 ChatGPT 的对话中——目的是让 AI 帮他们调试和优化。
3、经新闻媒体曝光、行政管理部门通报,或经CSDN巡查发现用户帐号使用过程中存在违法违规行为,对CSDN造成或可能造成实际损失或不良影响的(包括但不限于:CSDN声誉受损、大量用户投诉、危及交易安全或CSDN安全),CSDN有权视用户违规严重程度采取冻结用户在CSDN的全部款项(包括但不限于收益)、清空帐号信息、清空帐号发布的内容、限制或永久封禁帐号功能等管理措施。