Python——Fastapi管理平台(打包+优化)

目录

一、配置多个表

1、后端项目改造

2、导包报错——需要修改(2个地方)

3、启动后端(查看是否有问题)

4、配置前端

二、打包——成exe文件(不包含static文件)简单

1、后端修改

2、前端修改

3、运行打包命令

三、打包——成exe文件(加入static文件,打包为单个文件)

1、后端修改

2、创建build.py(把下面的内容复制进去)

3、静态文件路径修改

四、动态配置数据库

1、提取db.py

2、创建一个mysql_config.py(把下面内容复制进去)

3、修改db.py的内容

4、查看是否自动创建了mysql_config.json文件

五、参考内容(7y)


视频:

Python—配置多张表(快速制作一个管理平台)_哔哩哔哩_bilibili代码生成项目地址:https://github.com/zy7y/dfs-generate视频中的教程文档:https://blog.csdn.net/Pan_peter/article/details/138381461项目作者:https://space.bilibili.com/438858333, 视频播放量 158、弹幕量 0、点赞数 5、投硬币枚数 5、收藏人数 3、转发人数 0, 视频作者 电石QwQ, 作者简介 不甘寂寞,相关视频:Python从入门到精通,整整498集(自动化、爬虫、AI、大数据),零基础手把手指导学习,全程干货,快速入门,学完即可就业!Python入门_python开发,王达峰(光哥)-从专业到管理:思维与能力双重跃迁(全15套),可视化大屏 附源码(Vue3 + TS + DataV + ECharts),2024年二级建造师管理建工社全国模考二建,基于yolov8的多端检测系统(客户端 & 网页端) 毕设 开源,yolov8客户端-简单修改,Python—4分钟快速制作一个管理平台,若依vue前后端分离版——服务器快速部署(https),Dijkstra算法[用处+代码讲解],Python—Fastapi与vue打包(管理平台)icon-default.png?t=N7T8https://www.bilibili.com/video/BV1hT421X7vo

一、配置多个表

1、后端项目改造

2、导包报错——需要修改(2个地方)

3、启动后端(查看是否有问题)

4、配置前端

二、打包——成exe文件(不包含static文件)简单

Static——可在浏览器中运行的静态文件

npm run build 的原理是利用 Vue CLI 的构建工具,

根据项目中配置的各种规则,将源代码转换成可在浏览器中运行的静态文件。

1、后端修改

# main.py绑定静态文件目录app.mount("/static", StaticFiles(directory='static'), name="static")system = APIRouter()@system.get("/")def index():return FileResponse(f"static/index.html")@app.get("/{catchall:path}")async def catch_all():return FileResponse(f"static/index.html")import randomimport socketdef get_unused_port():"""获取未被使用的端口"""while True:port = random.randint(1024, 65535)  # 端口范围一般为1024-65535sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)try:sock.bind(("localhost", port))sock.close()return portexcept OSError:passif __name__ == '__main__':port = get_unused_port()import uvicornuvicorn.run("__main__:app", reload=False, port=port)

2、前端修改

在打包时,把根路径修改为static

后端请求路径修改

const url = import.meta.env.VITE_BASE_URL + "/Route";

3、运行打包命令

pyinstaller main.py

三、打包——成exe文件(加入static文件,打包为单个文件)

单个文件——并且是客户端(本质上就是用webview去访问网页,看起来就像是客户端一样)

说简单的点:网页套了一个桌面端的壳子

1、后端修改

# main.py绑定静态文件目录app.mount("/static", StaticFiles(directory='static'), name="static")system = APIRouter()@system.get("/")def index():return FileResponse(f"static/index.html")@app.get("/{catchall:path}")async def catch_all():return FileResponse(f"static/index.html")import randomimport socketimport threadingimport webviewimport uvicorndef get_unused_port():"""获取未被使用的端口"""while True:port = random.randint(1024, 65535)  # 端口范围一般为1024-65535sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)try:sock.bind(("localhost", port))sock.close()return portexcept OSError:passport = get_unused_port()# 启动FastAPI服务t = threading.Thread(target=uvicorn.run, args=("__main__:app",), kwargs={"port": port, "reload": False})t.daemon = Truet.start()# 在PyWebview应用程序中加载FastAPI应用程序的URLwebview.create_window('Desktop', f'http://localhost:{port}')webview.start()

 

2、创建build.py(把下面的内容复制进去)

from PyInstaller import __main__ as pyiparams = ['-F',# static目录纳入打包'--add-data', 'static:static',# 每次打包前清楚build 和 dist目录'--clean',# 无需用户确认'--noconfirm','main.py']pyi.run(params)

3、静态文件路径修改

因为我们要把static文件夹里面的内容打包进去

static_file_abspath = os.path.join(os.path.dirname(__file__), "static")# main.py绑定静态文件目录app.mount("/static", StaticFiles(directory=static_file_abspath), name="static")system = APIRouter()@system.get("/")def index():return FileResponse(f"{static_file_abspath}/index.html")@app.get("/{catchall:path}")async def catch_all():return FileResponse(f"{static_file_abspath}/index.html")

四、动态配置数据库

这里是写死的(打包后就无法修改,那么就不太友好)

1、提取db.py

2、创建一个mysql_config.py(把下面内容复制进去)

# -*- coding: utf-8 -*-# @Author : pan# @Description : 本模块为数据库读取配置# @Date : 2024年4月30日10:48:01import jsonimport osfrom dataclasses import dataclass, asdict@dataclassclass MySQLConf:"""MySQL 连接配置信息类"""host: str = '127.0.0.1'   # MySQL 主机地址port: int = 3306          # MySQL 端口号user: str = 'root'        # MySQL 用户名password: str = '123456'  # MySQL 密码db: str= 'yolov8'         # 数据库名称charset: str = "utf8"     # 字符集,默认为 utf8def to_dict(self) -> dict:"""返回配置信息的 JSON 格式表示Returns:            dict: 配置信息的 JSON 格式表示"""return asdict(self)def read_json_config(self, file_path: str) -> dict:"""从 JSON 文件中读取配置信息并返回字典Args:        file_path (str): JSON 文件路径Returns:        dict: 包含配置信息的字典"""# 检查文件是否存在if not os.path.exists(file_path):# 如果文件不存在,则创建一个包含默认配置信息的 JSON 文件with open(file_path, "w") as file:json.dump(self.to_dict(), file, indent=4)# 读取配置文件with open(file_path, "r") as file:config_dict = json.load(file)return config_dictdef write_json_config(self, config_dict: dict, file_path: str):"""将配置信息写入 JSON 文件Args:        config_dict (dict): 包含配置信息的字典file_path (str): JSON 文件路径"""with open(file_path, "w") as file:json.dump(config_dict, file, indent=4)# 读取 JSON 文件并将其转换为字典if __name__ == '__main__':config_dict = MySQLConf().read_json_config("mysql_config.json")# 创建 MySQLConf 实例并解包配置信息mysql_conf = MySQLConf(**config_dict)# 打印 MySQLConf 的数据print(mysql_conf.to_dict())# 修改 MySQLConf 的数据mysql_conf.password = '123456'# 将字典写入 JSON 文件MySQLConf().write_json_config(mysql_conf.to_dict(), "mysql_config.json")

3、修改db.py的内容

from sqlmodel import create_enginefrom mysql_config import MySQLConfconfig_dict = MySQLConf().read_json_config("mysql_config.json")# 创建 MySQLConf 实例并解包配置信息mysql_conf = MySQLConf(**config_dict)db_uri = f"mysql+pymysql://" \f"{mysql_conf.user}:{mysql_conf.password}@" \f"{mysql_conf.host}:{mysql_conf.port}/{mysql_conf.db}?charset={mysql_conf.charset}"engine = create_engine(db_uri)

4、查看是否自动创建了mysql_config.json文件

五、参考内容(7y)

视频:

仅2分钟它就将Python Web制作成桌面程序_哔哩哔哩_bilibili先前写的FastAPI SQLModel 接口服务代码生成工具,计划提供桌面程序;https://pywebview.flowrl.com/;dfs-generate 计划提供桌面程序 https://github.com/zy7y/dfs-generate/issues/12, 视频播放量 5429、弹幕量 1、点赞数 57、投硬币枚数 26、收藏人数 161、转发人数 13, 视频作者 7y记, 作者简介 建议直接看官方文档;微信公众号:7y记,相关视频:为什么软件公司很少选择Python开发Web应用?,pywebio模块,Java搞web和Python搞web有什么区别,看情况用,python这是mybatis?,Python Web:《谷粒教育》前后端分离版,启动!,PyQt5界面美化,软件发布!Python自动化办公,桌面版1.0 | 免费下载 | 开放源码,Python tkinter 桌面程序开发 | ttkbootstrap 项目介绍(遇到问题请在评论区留言),FastAPI:10天用Python和Vue3写了个权限管理,Django前后端分离:部署前端打包文件icon-default.png?t=N7T8https://www.bilibili.com/video/BV1BT4y1s7kZ

文档:

FastAPI:打包成桌面程序 · 语雀本文涉及版本:node 18, python3.11F...icon-default.png?t=N7T8https://www.yuque.com/u1362970/url5b5/gd77my2aq0dn397o

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

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

相关文章

Hive SQL-DML-Load加载数据

Hive SQL-DML-Load加载数据 在 Hive 中,可以使用 SQL DML(Data Manipulation Language)语句中的 LOAD 命令来加载数据到表中。LOAD 命令用于将本地文件系统或 HDFS(Hadoop 分布式文件系统)中的数据加载到 Hive 表中。 …

【ITK配准】第九期 基匹配Metric的配准样例

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享ITK配准中的基匹配Metric的配准样例,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 基匹配Me…

idea已配置的git仓库地址 更换新的Git仓库地址 教程

文章目录 目录 文章目录 更改流程 小结 概要更改流程技术细节小结 概要 先在idea控制台走一下流程 先将本地的git仓库删除 1. 查看当前远程仓库地址: 在终端或命令行中,导航到你的项目目录,并运行以下命令查看当前的远程仓库地址&#xff…

JMeter断言介绍

JMeter是一个功能强大的性能测试工具,它不仅可以模拟用户的行为,还可以对web应用程序的响应进行检测。其中断言就是JMeter中非常实用的功能之一。 断言是用于验证服务器响应是否正确的测试元素。它会检查服务器响应中的部分或全部内容,并在响…

正点原子Linux学习笔记(七)在 LCD 上显示 png 图片

在 LCD 上显示 png 图片 21.1 PNG 简介21.2 libpng 简介21.3 zlib 移植下载源码包编译源码安装目录下的文件夹介绍移植到开发板 21.4 libpng 移植下载源码包编译源码安装目录下的文件夹介绍移植到开发板 21.5 libpng 使用说明libpng 的数据结构创建和初始化 png_struct 对象创建…

cookie、session、token

cookie 纳入标准文档,标准浏览器需要遵守的协议之一,作为标准浏览器必须支持的。 WEB应用都是基于HTTP协议,标准的HTTP协议是无状态的。 什么是无状态? 不管是谁,不管是从哪个地方发起的请求。只要你的请求&#xff08…

openssl 生成证书步骤

本地测试RSA非对称加密功能时,需要用到签名证书。本文记录作者使用openssl本地生成证书的步骤,并没有深入研究openssl,难免会有错误,欢迎指出!!! 生成证书标准流程: 1、生成私钥&am…

【Linux】Linux——Centos7安装RabbitMQ

目录 安装包准备socaterlang 安装rabbitmq安装命令启动rabbitmq,两种方式查看rabbitmq 启动后的情况配置并开启网页插件关闭防火墙或开放端口测试登录问题配置web端访问账号密码和权限添加用户,后面两个参数分别是用户名和密码.添加权限修改用户角色再次…

单片机的中断

1. 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置 当中央处理机CPU正在处理某件事的时候外界发生紧急事件请求,要CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来中断的地方,继续原…

C语言22行代码,让你的朋友以为中了病毒

1 **C语言介绍 ** C语言是一种计算机编程语言,由丹尼斯里奇(Dennis Ritchie)在1972年左右为UNIX操作系统设计并开发。它具有高效、可移植、灵活和强大的特点,在计算机科学领域中具有广泛的应用。C语言是一种结构化语言&#xff0…

电子硬件设计-Xilinx FPGA/SoC前期功耗评估方法(1)

目录 1. 简介 2. 使用方法 2.1 设计输入 2.2 查看结果 3. 额外说明 4. 总结 1. 简介 XPE (Xilinx Power Estimator, 功耗估算器) 电子表格是一种功耗估算工具,用于项目的预设计和预实现阶段。 该工具可以帮助工程师进行架构评估、器件选择、合适的电源组件以…

官方文档k8s1.30安装部署高可用集群,kubeadm安装Kubernetes1.30最新版本

文章目录 节点架构一、准备开始(每一台机器都执行)1️⃣ 检查所需端口(可以直接关闭防火墙放开所有端口)端口和协议控制面工作节点 关闭防火墙关闭 SELinux 2️⃣ 安装containerd容器containerd部署containerd切换为国内源 3️⃣ 设置/etc/hosts 二、安装 kubeadm、kubelet 和 …

安卓开发--环境配置

本次项目选择使用 Andrio Studio 进行开发。虽然这款软件版本更新也很快。不过开发一款APP的技术流程是大差不差的。我几年前的安卓笔记放到现在还是能用。 现在CSDN网上写一个笔记留作以后参考,开始吧!!! 1 安装 Andrio Studio …

npm 安装 pnpm 时 报错 npm ERR! Unexpected token ‘.‘

问题 一个项目用的是 pnpm 安装的依赖,node 的版本是 16.16.0,nvm 的版本是 1.1.7,然后全局安装 pnpm 报错如下: 解决 我看网上的一些解决方案是说 nvm 版本过低导致,下面我们按照这个方向处理。 实首先下载 nvm-up…

使用凌鲨建立软件研发技能学习小组

凌鲨(OpenLinkSaas)的团队功能除了提供论坛功能,还能记录团队成员的成长记录。 使用方法 打开团队功能 团队功能在默认情况下是关闭的,你可以在登录后打开团队功能开关。 创建学习团队 日报/周报/个人目标一般是企业团队需要,建议关闭。 …

Shell生成支持x264的ffmpeg安卓全平台so

安卓 FFmpeg系列 第一章 Ubuntu生成ffmpeg安卓全平台so 第二章 Windows生成ffmpeg安卓全平台so 第三章 生成支持x264的ffmpeg安卓全平台so(本章) 文章目录 安卓 FFmpeg系列前言一、实现步骤1、下载x264源码2、交叉编译生成.a3、加入x264配置4、编译ffmp…

Redis 哨兵机制

文章目录 哨兵机制概念相关知识铺垫主从复制缺陷哨兵工作流程选举具体流程理解注意事项 哨兵机制概念 先抽象的理解,哨兵就像是监工,节点不干活了,就要有行动了。 Redis 的主从复制模式下,⼀旦主节点由于故障不能提供服务&#…

MVC WebAPI

创建项目 创建api控制器 》》》 web api 控制器要继承 ApiController 》》》 数据会自动装配 及自动绑定 》》》清除xml返回格式 //清除XML返回格式 GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 》》》跨越问题

【汇编语言小练习输入两个数字然后输出它们的和】

这个程序是用汇编语言编写一个简单的程序,它将从键盘输入两个数字,然后输出它们的和。 .MODEL SMALL .STACK 100H.DATAINPUT_MSG1 DB Enter the first number: $INPUT_MSG2 DB 13, 10, Enter the second number: $RESULT_MSG DB 13, 10, The sum is: $N…

2024服贸会,参展企业媒体宣传报道攻略

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 2024年中国国际服务贸易交易会(简称“服贸会”)是一个重要的国际贸易平台,对于参展企业来说,有效的媒体宣传报道对于提升品牌知名度、扩大…