使用FastAPI 构建的商城项目API

学习FastAPI 构建项目目录

构建项目接口

环境

项目文件结构

文件结构是仿照Flask项目目录构建的,官方推荐的模版对我而言太大。

.

|_FastDemo // 主项目文件

|

|___api

| |_____init__.py // 工厂模式生成app对象

| |____v1

| |____database.py // 数据库对象

| |____schemas.py // 验证参数 (可放到对应模块内)

| |____models.py // models模型类型 (可放到对应模块内)

| |____home // 项目模块文件

| | |____home.py

| | |______init__.py

| | |____home_backup.py

| |____category

| | |______init__.py

| |______init__.py

| |____profile

| | |____profile.py

| | |______init__.py

| |____goods

| |____goods.py

| |____goods_backup.py

|____test // 测试用例

| |______init__.py

| |____test_sqlite.py

|____utils // 工具类

| |______init__.py

| |___response_code.py // 自定义返回的状态码

|____setting // 配置文件夹

| |______init__.py // 根据虚拟环境 导出不同配置

| |____development_config.py // 开发环境配置

| |____production_config.py // 生产环境配置

|____extensions // 扩展文件

| |______init__.py // 导出扩展文件

| |____logger.py //

|____alembic // alembic 初始化自动生成的

| |____script.py.mako

| |____env.py

| |____versions

| |____README

|____alembic.ini // alembic 初始化自动生成的

|____.gitignore

|____requirements.text // 依赖文件

|____main.py // 项目启动文件

|____mall_data.sql // mysql insert 数据

|____mall_table.sql // msyql表格

|____README.md

|____Pipfile

|____Pipfile.lock

配置环境

setting目录下 init.py文件,会根据ENV的环境变量 导入不同的环境

development_config.py // 开发环境配置 production_config.py // 生产环境配置

如果不配置, 就只能访问 backup 备份的接口

导入数据

mall_data.sql // mysql insert 数据

mall_table.sql // msyql表格

上面两个文件是mysql数据, 需自行导入

安装依赖

# 推荐先安装pipenv

pip install pipenv -i https://mirrors.aliyun.com/pypi/simple/

# 先进入到项目文件下

cd /项目目录/MallAPI

# 安装pipenv python版本3.7+

pipenv install --python 3.8 # 注意 --python空格3.8

# 安装完后激活环境

pipenv shell

# 安装依赖

pip install -r requirements.text -i https://mirrors.aliyun.com/pypi/simple/

启动

cd /项目目录/MallAPI

# 在main.py文件同级目录下 执行

uvicorn main:app --host=127.0.0.1 --port=8010 --reload

当然也可以直接执行

python main.py

配置文件环境变量

# Pycharm 环境变量

https://stackoverflow.com/questions/21538859/pycharm-set-environment-variable-for-run-manage-py-task/22899916

https://stackoverflow.com/questions/42708389/how-to-set-environment-variables-in-pycharm

sqlalchemy + alembic数据迁移

尝试使用sqlalchemy + alembic 但是之前使用的Flask-Sqlalchemy扩展,迁移数据库很方便, 研究这个感觉很麻烦,算了直接使用sql语句,数据表手动创建

# 安装

pip install alembic

# 初始化 生成alembic配置文件

alembic init alembic

参考

python商城开发_使用FastAPI 构建的商城项目API相关推荐

  1. Python中fastapi构建的web项目使用pyinstaller打包为exe文件

    假设当前已经使用fastapi构建了一个web项目,项目结构为: 如果我们想使用pyinstaller对此web项目进行打包为exe文件,则需要在项目的跟目录下面执行下述命令先安装pyinstalle ...

  2. python做网站开发_如何用Python做网站开发

    很多人想要用Python做网站开发,但是又不知从何入手,接下来小编介绍用Python做网站开发需要学习哪些知识,又应该以什么样的顺序来学. 第一步:HTML(超文本标记语言)是网页的核心,学好HTML ...

  3. 如何学好python web开发_如何学好python web开发

    1.前言 我在没有接触互联网这个行业的时候,就一直好奇网站是怎么构建的.我现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,不过兴趣终归还是要有的,还要自己动手去实践的.Web开 ...

  4. python 环境 开发_设置Python开发环境

    python 环境 开发 Setting up Python is usually simple, but there are some places where newcomers (and exp ...

  5. python自动化测试开发_基于python的selenium2自动化测试从基础到实战(Python3、selenium2、自动化测试、web测试)...

    Selenium2是目前比较流行的一款针对web页面测试的自动化测试工具,他的前身是Selenium .Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozi ...

  6. Python中fastapi构建的web项目进行docker部署

    假设使用fastpi已经创建好了一个web项目 第一步:在项目的根目录路径下面创建一个名为dockerfile的文件 第二步:传统的方法是在dockerfile文件中编辑下述内容 FROM pytho ...

  7. swift python混合开发_引用swift项目

    iOS - OC 与 Swift 互相操作 前言 在 Swift 语言中,我们可以使用 Objective-C.C 语言编写代码,我们可以导入任意用 Objective-C 写的 Cocoa 平台框架 ...

  8. ifttt 编程开发_使用Stamplay构建AngularJS应用:面向开发人员的IFTTT

    ifttt 编程开发 什么是Stamplay? (What is Stamplay?) Stamplay is a web-based development platform for the API ...

  9. python fpga开发_惊人!Python+FPGA 实现FPGA开发大提速?!!

    在论文中,各位教授还对PYNQ开发环境的优缺点进行了阐述: 首先来说,PYNQ应用开发框架是一个开源的开发环境,提供了标准的可以约束芯片I/O引脚的"Overlay"比特流,同时, ...

最新文章

  1. vue调试工具如何使用_教你使用Vue.js的DevTools来调试vue项目
  2. EngineRoot是在哪里定义的?
  3. 获取SpringBean对象工具类
  4. python画三维平面-Python三维绘图--Matplotlib
  5. 设计功能和界面测试用例一
  6. git tag 介绍
  7. 【Android】init.rc
  8. 电脑技巧:如何开机进入纯净的Windows系统,看完你就会了!
  9. linux系统启动自动启动,linux系统下的自动启动
  10. google搜索引擎优化指南_Google谷歌SEO怎么优化?|新手入门完全指南
  11. 最简单的排序算法(C和C++实现)
  12. MODBUS ASCII协议和RTU协议的比较 -----和利时PLC采用Modbus RTU
  13. 关于码云的一些基本知识_关于葡萄酒,你必须知道的一些基础知识
  14. 啊哈C语言 第四章 【代码】【习题答案】
  15. 用友 U8 word模板修改
  16. 【图片】 3D打印的一些小东西 暗黑
  17. Azure云平台 GPS大数据解决方案 EventHub+Azure Databricks+Azure Cosmos DB Cassandra
  18. 如何让自己时刻冷静的方法_怎么让心静下来(让心静下来的5种方法)
  19. 长篇幅详解辐射定标、大气校正、监督分类、掩膜统计、植被覆盖度操作
  20. java 群名_网名丨沙雕又可爱的网名/群名

热门文章

  1. oracle中同义词的作用,Oracle中使用同义词
  2. Hive从入门到放弃——Hive表DML的艺术性(八)
  3. 苹果几最好用_史上最好用最全面的街机平台(无需下载,安卓苹果,电脑)跨平台畅玩...
  4. 将SuperMap iClient3D 9D(2019) for WebGL示例项目部署到iserver服务器上
  5. 小程序自定义拖动排序(uniapp)
  6. JDK中的Timer和TimerTask详解 目录结构: Timer和TimerTask 一个Timer调度的例子 如何终止Timer线程 关于cancle方式终止线程 反复执行一个任务 sche
  7. linux系统鼠标左键失灵,centos鼠标左键突然失灵问题与解决(更新于2014/11/24)
  8. ios上架及证书最新申请流程
  9. iOS客户端节日换肤的思考与实现
  10. 郑州大学统考英语计算机题库,2017年大学英语统考大纲试题(题型版五)