FastApi-1-結合sql 增/查demo

目錄

  • FastAPI學習記錄
    • 項目結構
    • 部分接口/代碼展示
    • 感受
    • 全部代碼

FastAPI學習記錄

fastapi已經學習有一段時間,今天抽時間簡單整理下。

官網介紹:
FastAPI 是一個用于構建 API 的現代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于標準的 Python 類型提示。

  • 快速:可與 NodeJS 和 Go 并肩的極高性能(歸功于 Starlette 和 Pydantic)最快的 Python web 框架之一。

  • 高效編碼:提高功能開發速度約 200% 至 300%。*

  • 更少 bug:減少約 40% 的人為(開發者)導致錯誤。* 智能:極佳的編輯器支持。處處皆可自動補全,減少調試時間。

  • 簡單:設計的易于使用和學習,閱讀文檔的時間更短。 簡短:使代碼重復最小化。通過不同的參數聲明實現豐富功能。bug 更少。

  • 健壯:生產可用級別的代碼。還有自動生成的交互式文檔。 標準化:基于(并完全兼容)API 的相關開放標準:OpenAPI
    (以前被稱為Swagger) 和 JSON Schema。

如果還沒學過的同學可先了解,如 pydantic、fastapi、sqlalchemy、請求/響應模型等有一定認識。
以下分享本次所學習的資料:

本次學習視頻(推薦):https://www.imooc.com/video/22971
fastapi:https://fastapi.tiangolo.com/zh
pydantic 官方文檔:https://docs.pydantic.dev
pydantic 支持所有的類型:https://docs.pydantic.dev/usage/types

項目結構

fastapi基本大同小異
在這里插入圖片描述
如果是多個應用則可以再往上提一層,如 admin 下的,app下的等等

部分接口/代碼展示

僅僅剛開始學習,增刪查改目前只涉及,增、查,未有刪改相信也是會很快上手的。
個人感覺主要是 pydantic schemas 這塊要梳理清楚,增刪查改該怎樣編排,使得在編碼時更方便。
全部代碼將放在最后!
接口文檔打開鏈接:http://127.0.0.1:8000/docs/ppl/index
在這里插入圖片描述

from fastapi import APIRouter, Depends, status
from sqlalchemy.orm import Session
from fastapi.responses import JSONResponse
from models.database import Base, engine, get_db
from schemas import schema_user
from cruds import crud_userapi_user = APIRouter()
Base.metadata.create_all(bind=engine)@api_user.post('/add', response_model=schema_user.GetUser)
def add_user(user: schema_user.CreateUser, work: schema_user.CreateWork, db: Session = Depends(get_db)):if crud_user.get_user(db, phone=user.phone):return JSONResponse(status_code=status.HTTP_400_BAD_REQUEST, content={'code': 0,'message': '該手機號已被注冊'})return crud_user.add_user(db, user, work)@api_user.get('/get', response_model=schema_user.GetUser)
def get_user(id: int = None, phone: int = None, db: Session = Depends(get_db)):user = crud_user.get_user(db, id, phone)if not user: return JSONResponse(status_code=status.HTTP_200_OK, content={})return user@api_user.get('/list', response_model=list[schema_user.GetUser])
def list_user(skip: int = 1, limit: int = 10, db: Session = Depends(get_db)):user_list = crud_user.get_user(db, skip=skip, limit=limit)if not user_list: return JSONResponse(status_code=status.HTTP_200_OK, content=[])return user_list

感受

值得學習,pydantic 真不錯,但是類似編排是比較麻煩了點,可能是本人代碼量還不夠、不熟練等因素,不過也準備能開始無腦增刪查改!!!還需要學習jwt鑒權、中間件、redis,異步后臺任務、日志記錄等等。
docs接口文檔真不賴,生成可視化文檔、標注等,直接能調試…方便!

全部代碼

右鍵點我(gitee)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40505.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40505.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40505.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot的配置文件以及日志設置

在使用SpringBoot開發的過程中我們通常會用到配置文件來設置配置信息 以及使用日志來進行記錄我們的操作,方便我們對錯誤的定位 配置文件的作用在于:設置端口,設置數據庫連接信息,設置日志等等 在SpringBoot中,配置…

Linux系統編程:通過System V共享內存實現進程間通信

目錄 一. 共享內存實現進程間通信的原理 二. 共享內存相關函數 2.1 共享內存的獲取 shmget / ftok 2.2 共享內存與進程地址空間相關聯 shmat 2.3 取消共享內存與進程地址空間的關聯 shmdt 2.4 刪除共享內存 shmctl 2.5 通信雙方創建共享內存代碼 三. 共享內存實現進程間…

承接各種設計

小弟985研究生畢業,目前攻讀讀博士,可做各種設計,包括但不限于Matlab 電力電子/電氣工程,matlab/simulink 電氣專業仿真MATLAB 電氣工程專業,matlab建模 電力電子,電氣工程,電力系統&#xff0c…

vue echarts macd指標 完整代碼

1 邏輯 給指定的series兩個對象 兩個對象有相同的xAxisIndex: 2,yAxisIndex: 2, 不同的data {name: "",type: "line",data: data1,xAxisIndex: 2,yAxisIndex: 2,},{name: "",type: "bar",data: data2,xAxisIndex: 2,yAxisIndex: 2,},…

Mac M2 Pro安裝使用Cocoapods

Mac Pro M2安裝使用Cocoapods 在新公司要做iOS開發,所以在新電腦上安裝Cocoapods 在升級gem,sudo gem update --system,和安裝cocoapods時都遇到如下的提示: ERROR: While executing gem ... (Errno::EPERM)Operation not per…

Linux下安裝nodejs

1、下載nodejs 點擊前往:Download | Node.js 2、解壓 tar -xvf node-v18.16.0-linux-x64.tar.xz mv node-v18.16.0-linux-x64/ /usr/local/nodejs 3、 建立軟鏈接 此時的bin文件夾中已經存在node以及npm,如果你進入到對應文件的中執行命令行一點問題…

現代C++:使用 shared_from_this 防止 this 提前被釋放

首先概括一下shared_from_this的作用:可以在類的成員函數中直接通過this得到指向當前所在對象的shared_ptr的智能指針,具體操作如下。 使用方法 設需要提供shared_from_this方法的類為C0定義為類,首先需要將C0定義為 std::enable_shared_fr…

mysql 02 數據庫的約束

為防止錯誤的數據被插入到數據表,MySQL中定義了一些維護數據庫完整性的規則;這些規則常稱為表的約束。常見約束如下: 主鍵約束 主鍵約束即primary key用于唯一的標識表中的每一行。被標識為主鍵的數據在表中是唯一的且其值不能為空。這點類似…

前后端分離------后端創建筆記(10)用戶修改

本文章轉載于【SpringBootVue】全網最簡單但實用的前后端分離項目實戰筆記 - 前端_大菜007的博客-CSDN博客 僅用于學習和討論,如有侵權請聯系 源碼:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…

Spring Boot實現第一次啟動時自動初始化數據庫流程詳解

隨著互聯網的發展項目中的業務功能越來越復雜,有一些基礎服務我們不可避免的會去調用一些第三方的接口或者公司內其他項目中提供的服務,但是遠程服務的健壯性和網絡穩定性都是不可控因素。 在測試階段可能沒有什么異常情況,但上線后可能會出…

https證書獲取的方法及好處

我們常說的https證書其實就是ssl證書,眼下為網站部署https證書是保障網站安全必不可少的一步。而https證書該如何獲取呢?下面就簡單介紹一下https證書獲取的方法。 https證書獲取途徑有兩種:自己簽發和由受信任的CA機構簽發。 自己給自己簽…

全國三網優惠話費充值接口開發指南

一、文檔綜述 近期想做項目的看過來~三網(全國移動、聯通、電信)話費、電費充值接口能夠實現將接口接入到小程序或者app上面,通過接口提交號碼和金額進行充值,可以幫助相關人員快速完成接口對接與聯調,平臺用戶可以通…

設計HTML5文本

網頁文本內容豐富、形式多樣,通過不同的版式顯示在頁面中,為用戶提供最直接、最豐富的信息。HTML5新增了很多文本標簽,它們都有特殊的語義,正確使用這些標簽,可以讓網頁文本更嚴謹、更符合語義。 1、通用文本 1.1、標…

算法競賽備賽之搜索與圖論訓練提升,暑期集訓營培訓

目錄 1.DFS和BFS 1.1.DFS深度優先搜索 1.2.BFS廣度優先搜索 2.樹與圖的遍歷:拓撲排序 3.最短路 3.1.迪杰斯特拉算法 3.2.貝爾曼算法 3.3.SPFA算法 3.4.多源匯最短路Floy算法 4.最小生成樹 4.1.普利姆算法 4.2.克魯斯卡爾算法 5.二分圖:染色法…

7. CSS(四)

目錄 一、浮動 (一)傳統網頁布局的三種方式 (二)標準流(普通流/文檔流) (三)為什么需要浮動? (四)什么是浮動 (五)浮…

OpenAI全球招外包大軍,手把手訓練ChatGPT取代碼農 ; 碼農:我自己「殺」自己

目錄 前言 OpenAI招了一千多名外包人員,訓練AI學會像人類一樣一步步思考。如果ChatGPT「學成歸來」,碼農恐怕真的危了? 碼農真的危了! 當時OpenAI也說,ChatGPT最合適的定位,應該是編碼輔助工具。 用Cha…

常用的Elasticsearch查詢DSL

1.基本查詢 GET /index_name/_search {"query": {"match": {"dispatchClass": "1"}} }2.多條件查詢 GET /index_name/_search {"query": {"bool": {"must": [{"match": {"createUser&…

計算機競賽 opencv 圖像識別 指紋識別 - python

0 前言 🔥 優質競賽項目系列,今天要分享的是 🚩 基于機器視覺的指紋識別系統 🥇學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分工作量:3分創新點:4分 該項目較為新穎,適…

Vue引入Echarts報錯 import * as echarts from “echarts“;

項目場景: 已經下載好echarts cnpm i echarts Vue引入Echarts import echarts from echarts mounted() {this.myChart echarts.init(document.querySelector(.right))this.myChart.setOption({title: {text: 消費列表,left: center},...問題描述 原因分析&#…

【100天精通python】Day38:GUI界面編程_PyQT從入門到實戰(中)

目錄 專欄導讀 4 數據庫操作 4.1 連接數據庫 4.2 執行 SQL 查詢和更新: 4.3 使用模型和視圖顯示數據 5 多線程編程 5.1 多線程編程的概念和優勢 5.2 在 PyQt 中使用多線程 5.3 處理多線程間的同步和通信問題 5.3.1 信號槽機制 5.3.2 線程安全的數據訪問 Q…