#渲染模板

from fastapi import FastAPI,Request
from fastapi.responses import JSONResponse,HTMLResponse,FileResponse
from fastapi.templating import Jinja2Templatesapp = FastAPI()
template = Jinja2Templates("ht")@app.get("/")
def index(req:Request):return template.TemplateResponse("index_html.html",context={"request":req})

#目录结构

model.py文件

from tortoise import Model,fieldsclass User(Model):"""数据库种的表"""id = fields.IntField(pk=True)name = fields.CharField(max_length=20)sexx = fields.CharField(max_length=20,default="男")c_time = fields.DatetimeField(auto_now_add=True)u_time = fields.DatetimeField(auto_now=True)

db.py文件

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from models.model import User
from tortoise.contrib.fastapi import HTTPNotFoundError, register_tortoiseapp = FastAPI(title="Tortoise ORM FastAPI example")register_tortoise(#这里是启动app的,之后会考虑和使用uvicorn启动的性能差别app,db_url="mysql://root:123@localhost:3306/fastapi_1",#数据库信息modules={"models": ["models.model"]},#models列表# generate_schemas=True,#如果数据库为空,则自动生成对应表单,生产环境不要开add_exception_handlers=True,#生产环境不要开,会泄露调试信息
)TORTOISE_ORM = {"connections": {"default": "mysql://root:123@localhost:3306/fastapi_1"},"apps": {"models": {# models对应上面创建的models.py"models": ["aerich.models", "models.model"],"default_connection": "default",},},
}

index1.py文件

import aerich
from fastapi import FastAPI
from models.model import User
from db import app
from tortoise.contrib.fastapi import register_tortoise@app.get("/")
async def get_user():user_all = await User.all()print(user_all)return "a"
  • 生成初始化数据配置, db.TORTOISE_ORM是上面配置TORTOISE_ORM的路径
生成初始化数据配置
(1)aerich init -t db.TORTOISE_ORM初始化数据库   生成后会生成一个pyproject.toml文件和一个migrations文件夹
(2)aerich init-db修改数据模型后生成迁移文件
(3)aerich migrate
# 在后面加 --name=xxx, 可以指定文件名#迁移后执行upgrade
(4)aerich upgrade回退到上一个版本
aerich downgrade#启动项目命令
uvicorn index1:app --reload 例子:我的项目启动命令是uvicorn views.index1:app --reload

 #增删改查

import aerich
from fastapi import FastAPI,Form
from models.model import User
from db import app
from tortoise.contrib.fastapi import register_tortoise#展示全部
@app.get("/")
async def get_user():user_all = await User.all()print(user_all)return "a"#添加数据命令
@app.api_route("/add_data",methods=['POST'])
async  def add_data(name=Form(None),sexx=Form(None)):await User(name=name,sexx=sexx).save()return "添加成功"#单条数据查询
@app.api_route("/one_filter_data",methods=['POST'])
async def like_data_filter(name=Form(None)):data = await User.filter(name=name).first()print(data)return {"data":data}#带有包含该字段值的数据
@app.post("/filter_all_data")
async def filter_all_data(name=Form(None)):#加不加all()没什么区别data = await User.filter(name=name).all()return {"data":data}#修改数据
@app.put("/put_filter_data")
async def put_filter_data(name=Form(None),id=Form(None),sexx=Form(None)):await User.filter(id=id).update(name=name,sexx=sexx)return "修改成功"#删除数据
@app.delete("/delete_data")
async def del_data(id=Form(None)):await User.filter(id=id).delete()return "删除成功"

FastAPI框架,数据库迁移生成及增删改查相关推荐

  1. molicode生成vue增删改查功能

    2019独角兽企业重金招聘Python工程师标准>>> molicode生成vue增删改查功能 背景描述 当前生成的页面主要应用于VUE前端UI框架 iview: https://i ...

  2. 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口

    无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于PostgreSQL零代码生成CRUD增删改查RESTful API接 ...

  3. 无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口

    无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接 ...

  4. Node连接MySQL数据库进行基本的增删改查操作(一看就会)

    Node连接MySQL数据库进行基本的增删改查操作(一看就会) ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ...

  5. 数据库多表的增删改查操作

    数据库多表的增删改查操作: 增加操作(一对多)--- 一对多形式的表的建立: models.py: from django.db import models # Create your models ...

  6. Mysql —— C语言链接mysql数据库,实现可以增删改查的角色权限登录系统

    /******************************************************************** * 标题:C语言链接mysql数据库,实现可以增删改查的角色 ...

  7. SQL Server创建数据库和数据的增删改查

    SQL Server创建数据库和数据的增删改查 本文是针对数据的增删改查,数据的创建 首先我们使用命令创建sql server数据库 D盘新建一个文件夹DB use master go --创建数据库 ...

  8. dept在Java里面_EmpDeptManager 在JavaEE环境下搭建三大框架体系实现员工的增删改查系统 Develop 261万源代码下载- www.pudn.com...

    文件名称: EmpDeptManager下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 39 KB 上传时间: 2016-07-08 下载次数: 0 提 供 者 ...

  9. asp连接mysql数据库增删查_【ASP】ASP对Access数据库的连接、增删改查及ASP的基本语法...

    本文讨论的是ASP,而不是Visual Studio写出来的.ASPX也就是ASP.NET. ASP不需要任何插件的支持,关键你是配置好WINDOWS的IIS服务器,把页面扔在上面执行就可以了. 不同 ...

最新文章

  1. java.lang.NoSuchMethodError: org.junit.runner.Description.getClassName()Ljava/lang/String;
  2. 修改段落内容_英文论文修改技巧大全
  3. 第五十四天 how can I 坚持
  4. Java接口–历年来Java 9之旅–默认和私有方法
  5. n个字符串按照字典序排列
  6. 计算机网络学习笔记-1.2.4TCP,IP参考模型和五层参考模型
  7. 【转】Maven实战(八)---模块划分
  8. 无源波分和彩光模块_纯无源粗波分复用器(CWDM)部署4/5G网络,节省光缆资源...
  9. 编译原理:用lex/flex做词法分析
  10. 【POJ1088】滑雪
  11. Amazon WorkSpaces现支持Amazon Linux 2 Desktop
  12. python中的join函数连接dataframe_python pandas处理CSV文件并使用join()方法拼接两个dataframe...
  13. CSMA协议:改进的ALOHA协议
  14. 天涯宝盒-天涯看贴脚本-只看楼主-自动翻页
  15. serviceWorker 服务器与浏览器之间的代理
  16. 查询oracle中所有的用户,如何查询Oracle中所有用户信息
  17. CAN/CANFD总线基础培训
  18. 咕咚vs悦跑圈的竞品分析
  19. Hierarchical Tree
  20. 爆火交友一元脱单、盲盒、微信公众号制作【源码】

热门文章

  1. 体积光 GodRay
  2. MISC 入门隐写之用眼睛去倾听
  3. MATLAB安装时为英文如何切换中文
  4. 详解什么是BFC和BFC能解决什么问题
  5. html5 dpi,关于meta viewport中target-densitydpi属性详解(推荐)_哒哒_前端开发者
  6. 线程 - 线程安全 - 线程优化
  7. 学习《JavaScript高级程序设计》----day06
  8. 华为OD机试用Python实现 -【字母组合】(2023-Q1 新题)
  9. 【CSS】绝对定位元素设置 水平 / 垂直 居中 ( 绝对定位元素居中设置 - 先偏移 50% 再回退子元素一半尺寸 | 绝对定位居中设置 )
  10. Dracula theme