Python使用FastApi项目开发-项目搭建及打包简介

发布时间:2026/10/13 5:57:31
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现存问题现在项目可以打包成功打包成功却没有办法进行访问暂未明白是啥原因有清楚辛苦帮忙解答一下哈谢谢