尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Python使用FastApi项目开发-项目搭建及打包简介
文章目录python开发web框架简介FastApi安装安装依赖包代码编写创建数据库连接模块 database.py创建数据库实体模块 model.py创建实体类模型模块 schemas.py创建操作数据库模块 curd.py创建接收请求模块 main.py创建运行模块 run.py项目运行编写完以上代码通过以下命令进行项目启动查看项目接口pyinstalle打包FastApi项目项目通过uvicorn运行安装 pyinstaller打包应用现存问题现在项目可以打包成功打包成功却没有办法进行访问暂未明白是啥原因有清楚辛苦帮忙解答一下哈谢谢python开发web框架简介python在开发Web项目常用框架DjangoDjango是最著名的Python web开发框架之一。它提供了丰富的功能例如ORM、模板、表单等并且有活跃的社区支持。FlaskFlask是一个轻量级的框架它的设计哲学是简单和可扩展。Flask依赖于扩展来提供数据库的支持身份验证等功能。PyramidPyramid是一个Python语言的web应用程序开发框架它的设计哲学是简单和可扩展。TornadoTornado是一个Python web框架和异步网络库特别适合I/O密集型的应用。FastAPIFastAPI是一个现代、高性能的Python web框架使用ASGI和Pydantic。BottleBottle是一个简单高效的Python web框架它的设计哲学是快速和简单。web2pyweb2py是一个全功能的开源Python框架可以在Windows、Unix、Mac OS和Google App Engine等系统上运行。FastApi安装安装依赖包pip install fastapi pip install uvicorn pip install sqlalchemy pip install pymysql代码编写创建数据库连接模块 database.pyfrom sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker #设置数据库的url SQLALCHEMY_DATABASE_URL mysqlpymysql://root:wangcheng192.168.1.229:3306/test #创建数据库引擎 engine create_engine( SQLALCHEMY_DATABASE_URL, echoTrue, #打印sql语句 # connect_args{check_same_thread:False} #解决多线程问题 sqlite使用 ) #创建回话 sessionLocal sessionmaker(autocommitFalse,autoflushFalse,bindengine,expire_on_commitTrue) #映射 Base declarative_base()创建数据库实体模块 model.pyfrom sqlalchemy import Column,Integer,String from database import Base #定义User类继承自Base class User(Base): #定义表名 __tablename__ user #定义id字段主键自增索引可以为空 id Column(Integer,primary_keyTrue,indexTrue,nullableTrue,autoincrementTrue) #定义name字段不能为空长度100 name Column(String(100),nullableFalse,comment姓名) #定义gender字段长度为10 gender Column(String(10),comment性别)创建实体类模型模块 schemas.pyfrom pydantic import BaseModel from typing import Union,Optional #定义userbase类继承自basemodal class UserBase(BaseModel): #定义id属性类型为int,默认值为1 id : int 1 #定义Config属性用于配置 class Config: #设置orm_mode属性值为True orm_mode True #创建用户类 class create_user(UserBase): #用户名 name: str #性别 gender: Optional[str] None #定义一个config类 class Config: #定义一个orm_mode属性为true orm_mode True class read_user(UserBase): #用户名 name: str gender: Optional[str] None class Config: orm_mode True创建操作数据库模块 curd.pyfrom sqlalchemy.orm import Session import model,schemas #查看用户信息 def get_user(db:Session,skip:int0,limit:int10): #返回skip和limit之间的用户信息 return db.query(model.User).offset(skip).limit(limit).all() #创建新用户 def create_user(db: Session,user:schemas.create_user): #创建一个User模型并将加密后的密码赋值给password db_user model.User(id user.id, name user.name, gender user.gender) #将User模型添加到数据库 db.add(db_user) #提交数据库操作 db.commit() #刷新数据库 db.refresh(db_user) #返回创建的用户 return db_user def get_user_by_account(db: Session,name): return db.query(model.User).filter(model.User.name name).all()创建接收请求模块 main.pyfrom fastapi import Depends,APIRouter,HTTPException from sqlalchemy.orm import Session import crud,model,schemas from database import sessionLocal,engine #创建数据库表 model.Base.metadata.create_all(bindengine) #创建所有模型 app_ms APIRouter() #定义一个函数get_db,用于获取数据库连接 def get_db(): db sessionLocal() try: yield db finally: db.close() #获取user数据 app_ms.get(/read/,response_modellist[schemas.read_user]) def read_data(skip: int 0,limit: int 10,db: Session Depends(get_db)): #从数据库中获取用户数据 users crud.get_user(db, skipskip,limitlimit) #返回用户数据 return users #录入user app_ms.post(/create/,response_model schemas.read_user) def create_data(user: schemas.create_user,db: Session Depends(get_db)): #检查数据库中是否存在该用户账号 db_user crud.get_user_by_account(db,name user.name) #如果存在则抛出异常 if db_user: raise HTTPException(status_code400,detailuser already registered) #检查数据库中是否存在该用户手机号 # db_user crud.get_user_by_phone_number(db,phone_number user.phone_number) #如果存在则抛出异常 # if db_user: # raise HTTPException(status_code400,detailphone number already used) #返回创建的用户 return crud.create_user(dbdb,useruser)创建运行模块 run.pyfrom fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware import uvicorn from main import app_ms #创建Fastapi应用 app FastAPI() #允许所有来源的跨域请求 app.add_middleware( CORSMiddleware, allow_origins [*], allow_credentials True, allow_methods [*], allow_headers [*] ) #包含app_ms路由前缀为/app_ms,标签为api_ms app.include_router(app_ms,prefix/api,tags[api_ms]) if __name__ __main__: #启动uvicorn服务参数为run:app,主机地址为127.0.0.1端口号为8000自动重新加载工作进程数为1 uvicorn.run(apprun:app,host127.0.0.1,port8000,reloadTrue,workers1)项目运行编写完以上代码通过以下命令进行项目启动python run.py 或 uvicorn run:app --reload查看项目接口127.0.0.1:8000/docspyinstalle打包FastApi项目项目通过uvicorn运行uvicorn main:app --reload安装 pyinstallerpip install pyinstaller打包应用pyinstaller --onefile --name myapp run.py现存问题现在项目可以打包成功打包成功却没有办法进行访问暂未明白是啥原因有清楚辛苦帮忙解答一下哈谢谢
RELATED

相关推荐

AnyPS5实战:用开源面板统一管理PS5游戏库与远程串流

AnyPS5实战:用开源面板统一管理PS5游戏库与远程串流

AnyPS5 这个名字听起来像是一台主机,其实它是我折腾的一个本地工具项目。起因很简单:我手里的游戏、账号、主机状态越来越散,数字版躺在不同账号里,光盘版挤在书架上,想远程玩一把还得分清哪台机器、哪个账号、哪次打折…

📅 2026/10/13 5:57:23
多AI Provider架构设计:从统一接口到动态路由的接入层重构

多AI Provider架构设计:从统一接口到动态路由的接入层重构

一个多月前,我把 HagiCode 平台的核心接入层从“单 Provider 写死”重构成了“多 AI Provider 架构”。今天把整个过程中的设计取舍、代码落地方案以及踩过的坑整理出来,算是给后端团队和做 AI 应用集成的朋友一份参考。这里说的 AI Provider&#xff0c…

📅 2026/10/13 5:57:23
CSAPP第十二章并发编程深度解析:穿透缓存、锁与调度的底层真相

CSAPP第十二章并发编程深度解析:穿透缓存、锁与调度的底层真相

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/13 5:52:22
MORE NEWS

更多资讯

📰

数据库课程设计实战:从建库到事务闭环的完整指南

简介:本资源是广东工业大学数据库课程设计大作业的完整实现方案,面向高校计算机及相关专业本科生,聚焦数据库系统开发全流程实践,解决课程设计中需求分析、后端逻辑、前端交互与数据持久化等核心问题。压缩包共195个文件&#xff…

📰

ai-agent-book:从入门到 Agent 工程实践(一)

AI Agent 入门 本blog为datawhale开源教程《ai-agent-book:从入门到Agent工程实践》的组队打卡学习笔记 文章目录AI Agent 入门Agent的组成部分LLM:Agent 的大脑工具:Agent 的手脚上下文:Agent 的眼睛Harness:约束or赋…

📰

【PMSM滤波代码2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。订阅专栏后可查看完整代码

如需帮助,或有滤波相关的MATLAB代码定制需求,可从个人主页左侧联系我 订阅专栏后,可直接查看源代码,粘贴到MATLAB空脚本中即可直接运行、得到结果 文章目录 总体介绍 运行结果 状态估计误差 电压与新息诊断 电流观测与估计 负载转矩观测 转速与角度观测 命令行输出 MATLAB源…

📰

MySQL 8.4课程设计实战:从教科书模型到生产级数据库

简介:本资源是广东工业大学数据库课程设计大作业的完整实现方案,面向高校计算机、软件工程等专业学生及数据库初学者,聚焦真实业务场景下的系统开发全流程实践。项目以平行志愿录取系统为原型,采用Java(Spring框架&…

📰

解Bug之路-隔离故障点后业务不恢复?-热点Key处理与亚稳态故障

前言《解Bug之路》作为笔者博客的镇站之宝系列,之前写的都是一些疑难杂症。但在和AI交流的过程中发现,一些对于笔者来说排查很直观的故障其实有不小的价值。这篇文章就是此种情况,虽然排查过程很直观,思路一直流畅没有卡点&#x…

📰

PostGIS 3.5.0 + PostgreSQL 17 Windows二进制捆绑包详解

简介:本资源是PostgreSQL 17专用的PostGIS 3.5.0空间数据库扩展安装包,面向GIS开发人员、地理信息专业学生及需要在PostgreSQL中启用空间数据能力的数据库工程师。它解决了传统关系型数据库缺乏原生地理空间处理能力的问题,可快速为PG17实例集…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬