Python的后端框架 - 教程

news/2026/1/20 20:14:25/文章来源:https://www.cnblogs.com/gccbuaa/p/19508668

Python的后端框架

一.Django

1.类型

全栈重型框架

2.核心特性

内置 ORM、Admin 后台、认证、表单、缓存等;MTV 架构

3.适用场景

企业级应用、CMS、电商平台、数据后台

4.性能

~2,000 RPS

二、Flask

1.类型

轻量微框架

2.核心特性

极简核心,高度可扩展;通过插件(如 Flask-SQLAlchemy)按需添加功能;灵活自由

3.适用场景

微服务、小型 API、原型开发、小型项目

4.性能

~3,000 RPS

三、FastAPI

1.类型

现代异步框架

2.核心特性

原生支持 async/await ;自动 OpenAPI/ Swagger文档;基于Pydantic类型校验,高性能(接近Nodejs)

3.适用场景
高并发 API、实时服务、机器学习模型部署
4.性能
~12,500 RPS

代码:
安装依赖
pip install fastapi uvicorn sqlalchemy pydantic[dotenv]

main.py

from fastapi import FastAPI, HTTPExceptionfrom pydantic import BaseModelfrom sqlalchemy import create_engine, Column, Integer, Stringfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmakerfrom typing import List# === 1. 创建数据库(SQLite 示例)DATABASE_URL = “sqlite:///./users.db"engine = create_engine(DATABASE_URL, connect_args={“check_same_thread”: False})SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)Base = declarative_base()# === 2. 定义数据库模型class UserTable(Base): tablename = “users” id = Column(Integer, primary_key=True, index=True) name = Column(String(50), nullable=False) email = Column(String(100), unique=True, index=True)# 创建表Base.metadata.create_all(bind=engine)# === 3. Pydantic 模型(用于 API 输入输出校验)class UserCreate(BaseModel): name: str email: strclass UserResponse(UserCreate): id: int class Config: from_attributes = True # 兼容 SQLAlchemy 对象# === 4. 创建 FastAPI 应用app = FastAPI( title=“✨ 用户管理系统”, description=“一个超简单的 FastAPI 后端示例”, version=“0.1.0”)# === 5. CRUD 接口@app.post(”/users", response_model=UserResponse, status_code=201)def create_user(user: UserCreate): db = SessionLocal() db_user = UserTable(**user.model_dump()) try: db.add(db_user) db.commit() db.refresh(db_user) return db_user except Exception: raise HTTPException(status_code=400, detail=“邮箱已存在”) finally: db.close()@app.get("/users", response_model=List[UserResponse])def read_users(): db = SessionLocal() users = db.query(UserTable).all() db.close() return users@app.get("/users/{user_id}", response_model=UserResponse)def read_user(user_id: int): db = SessionLocal() user = db.query(UserTable).filter(UserTable.id == user_id).first() db.close() if not user: raise HTTPException(status_code=404, detail=“用户不存在”) return user@app.put("/users/{user_id}", response_model=UserResponse)def update_user(user_id: int, user: UserCreate): db = SessionLocal() db_user = db.query(UserTable).filter(UserTable.id == user_id).first() if not db_user: raise HTTPException(status_code=404, detail=“用户不存在”) db_user.name = user.name db_user.email = user.email db.commit() db.refresh(db_user) db.close() return db_user@app.delete("/users/{user_id}", status_code=204)def delete_user(user_id: int): db = SessionLocal() db_user = db.query(UserTable).filter(UserTable.id == user_id).first() if not db_user: raise HTTPException(status_code=404, detail=“用户不存在”) db.delete(db_user) db.commit() db.close() return None

运行如下代码:
uvicorn main:app --reload

打印如下输出:
Uvicorn running on http://127.0.0.1:8000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1190633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot集成支付宝

1、支付宝开放平台操作 我们需要做内网穿透,推荐使用 ngrok | API Gateway, Kubernetes Ingress, Webhook Gateway 详细接口参考API - 开放平台 进入 控制台首页 - 开放平台,开通沙箱环境 支付宝公钥,和你的秘钥点击查看就能看到 2、Spring…

救命神器!8款AI论文软件测评:本科生毕业论文全攻略

救命神器!8款AI论文软件测评:本科生毕业论文全攻略 2026年AI论文工具测评:为何需要这份精准指南? 随着人工智能技术的不断进步,越来越多的本科生开始依赖AI论文软件来提升写作效率、优化内容结构。然而,面对…

开发者社区的力量:一位测试工程师的破茧之路

迷雾中的测试新人 2018年夏,当我手持手工测试用例文档站在网易大楼前时,从未想到三年后会在谷歌开发者大会分享《AI赋能的混沌工程实践》。作为日均执行200重复测试的"点点工程师",我陷入职业困局:自动化脚本无从下手&…

【闲话】i and flow - L

i and flow 2026.1.20 部分为 AI 创作。其中所有人名均为虚构,均非有意设定。深夜十一点半,小 L 的房间还亮着屏幕的光。 他盯着「网络流 24 题」题单的进度条,23 / 24,最后一个红叉格外刺眼。第 24 题,《机器人路…

04. 引用

1.引用的基本定义与核心特性 2.引用的常见用法 3.引用 vs 指针1.引用的基本定义与核心特性 c中引用是变量的"别名", 就像一个人有本名和外号, 引用和原变量指向同一块内存地址, 操作引用就等同于操作原变量1).语法格式// 语法:类型& 引用名 原变量名…

系统V信号量

信号量 PV操作的名称来源于荷兰语,其中P代表“passeren”(通过),V代表“vrijgeven”(释放),是Dijkstra在设计信号量时所使用的术语。 P操作:表示“通过”,用于请求资源或进入临界区。当进程执行P操作时,信号…

我的十年:从测试员到AI创业者的真实旅程

启程于测试的基石 回首2016年,我作为一名初入行的软件测试员,坐在狭小的工位前,面对着一堆杂乱的测试用例和反复出现的bug报告。那时的测试世界,大多依赖手动执行:我们用Excel记录用例,用JIRA追踪缺陷&…

2026年靠谱的pp管,PP风机,pp风管厂家实力推荐名录 - 品牌鉴赏师

引言在当今环保产业蓬勃发展的时代,PP 管、PP 风机、PP 风管作为工业通风与环保系统中不可或缺的重要组件,其质量与性能直接关系到整个系统的稳定运行与环保效果。为了给广大用户提供一份可靠、客观的厂家实力推荐名…

SSM294的农产品进销存管理vue

目录SSM294农产品进销存管理系统的Vue实现摘要开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!SSM294农产品进销存管理系统的Vue实现摘要 该系统基于SSM(SpringSpringMVCMyBatis)后端框架与Vue.js前端技…

Java实现——链队列(泛型)

package Data_Structure;import java.util.NoSuchElementException; import java.util.Random;//链队列,附设头结点 public class LinkQueue<T> {//内部结点类private static class Node<T>{T data;Node&…

SSM296的汽车租赁系统vue

目录SSM296汽车租赁系统Vue摘要开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;SSM296汽车租赁系统Vue摘要 SSM296汽车租赁系统是基于SpringSpringMVCMyBatis&#xff08;SSM&#xff09;后端框架与Vue.js前端框架开发的现代化…

2026年上海二手房装修公司推荐,一站式服务与拎包入住交付能力横评 - 品牌鉴赏师

引言在上海二手房装修市场蓬勃发展的当下,消费者面临着众多装修公司的选择。为了给消费者提供全面、客观、公正的参考,我们依据相关的行业标准和市场数据,制定了这份上海二手房装修公司推荐榜单,并推出相应的选择指…

基于微信小程序的医院体检预约管理系统的设计和实现

前言 &#x1f31e;博主介绍&#xff1a;✌CSDN特邀作者、全栈领域优质创作者、10年IT从业经验、码云/掘金/知乎/B站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战&#xff0c;以及程序定制化开发、文档编写、答疑辅导等。✌…

JavaScript 数组合并性能优化:扩展运算符 vs concat vs 循环 push

在日常开发中&#xff0c;我们经常需要合并数组&#xff0c;比如批量导入数据、分页加载列表、处理大量日志等场景。当数组规模较小时&#xff0c;用什么方法都差不多&#xff1b;但当数组达到成千上万条时&#xff0c;选择不当的方法可能会导致栈溢出或内存飙升。 今天我们就…

SSM291的母婴用品商城网站

目录SSM291母婴用品商城网站摘要开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;SSM291母婴用品商城网站摘要 SSM291母婴用品商城网站是一个基于SSM&#xff08;SpringSpringMVCMyBatis&#xff09;框架开发的电子商务平台&…

python项目打包为镜像

1.生成 requirements.txt 在项目根目录下,使用 pipreqs生成依赖文件,确保镜像构建时安装正确的包 pip install pipreqs pipreqs . --encoding=utf8 --force 2.编写 Dockerfile # 使用官方 Python 轻量级镜像 FROM python:3.11-slim# 设置容器内工作目录 WORKDIR /app# 复制…

救命神器9个AI论文软件,专科生搞定毕业论文+格式规范!

救命神器9个AI论文软件&#xff0c;专科生搞定毕业论文格式规范&#xff01; 专科生的毕业论文救星&#xff0c;AI工具如何帮你轻松过关&#xff1f; 对于许多专科生来说&#xff0c;毕业论文不仅是学术能力的考验&#xff0c;更是时间与精力的巨大挑战。尤其是在面对格式规范、…

知光项目对象存储模块

前言&#xff1a; 该文档只作为本人学习过程的记录&#xff0c;若还需要更详细的项目文档可以点击下方链接进行购买 文档地址 同时该项目已经在git上面开源&#xff0c;可以在购买前去看一下该项目。 项目后端的git地址&#xff1a;知光git后端地址 项目前端的git地址: 知…

【路径规划】基于RRT、RRT星、RRTX、A_和D_ Lite实现机器人路径规划附matlab代码

✅作者简介&#xff1a;热爱数据处理、建模、算法设计的Matlab仿真开发者。&#x1f34e;更多Matlab代码及仿真咨询内容点击 &#x1f517;&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知。&#x1f525; 内容介绍机器人路径规划是自主移动机器人&…

fastapi里面tortoise-orm的用法

1.文档地址 https://blog.csdn.net/weixin_53909748/article/details/131747197 2.创建实体类,model/models.py from tortoise.models import Model from tortoise import fieldsclass Teacher(Model):id = fields.IntField(pk=True)name = fields.CharField(max_length=25…