[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-public-w9DeSyXA":3,"public-project-articles-w9DeSyXA":17},{"id":4,"uuid":5,"project_id":6,"title":7,"content":8,"type":9,"status":10,"public_enabled":10,"views":11,"sort":12,"created_at":13,"updated_at":14,"project_title":15,"project_slug":16},1165,"w9DeSyXA",57,"02. 零基础小白直接上手FastAPI","Pyhton 菜鸟教程\n\n\u003C!-- 这是一张图片，ocr 内容为： -->\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F751015\u002F1767599723853-a5edd000-ec2e-40a7-8f7e-891abd4acdbd.png)\n\n\n\nFastAPI 是一个比较新的 Python 的 Web 框架  \n\n管理系统、网站、数据分析需要展示\n\n## 环境要求\n\npython 版本：3.12     \n\nPycharm 2024.1\n\nMySQL8.0\n\nNavicat17\n\n\n\n建议使用 exe 安装 python\n\n[https:\u002F\u002Fwww.python.org\u002Fftp\u002Fpython\u002F3.12.10\u002Fpython-3.12.10-amd64.exe](https:\u002F\u002Fwww.python.org\u002Fftp\u002Fpython\u002F3.12.10\u002Fpython-3.12.10-amd64.exe)\n\n\n\nMysql 安装：[https:\u002F\u002Fdev.mysql.com\u002Fdownloads\u002Finstaller\u002F](https:\u002F\u002Fdev.mysql.com\u002Fdownloads\u002Finstaller\u002F)\n\n\n\n配置 pip\n\n%AppData% 新建 pip 文件夹 再新建一个 pip.ini 文件\n\n```plain\n[global]\nindex-url = http:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\ntrusted-host = pypi.tuna.tsinghua.edu.cn\n```\n\n\n\n**pip config list ** 查看本地配置的镜像\n\n## 新建项目\n\n项目名称是  fastapi-app，注意放在外层目录里面\n\n\u003C!-- 这是一张图片，ocr 内容为： -->\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F751015\u002F1767600355231-8571d8fb-b9f3-4587-8c98-6e952e3a77eb.png)\n\n\u003C!-- 这是一张图片，ocr 内容为： -->\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F751015\u002F1767603066263-03074296-3469-4a07-8e75-121899973094.png)\n\n\n\n打开外层的目录，标识  **fastapi-app** 为源码目录\n\n\u003C!-- 这是一张图片，ocr 内容为： -->\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2026\u002Fpng\u002F751015\u002F1767603094333-6a33f1e3-0419-4c73-86e4-7155d8953b71.png)\n\n\n\n\n\n## Http 的请求类型\n\n查询：get\n\n新增：ppost\n\n修改：put\n\n删除：delete\n\n\n\n## 创建数据库和表\n\n数据库：fastapi_vue3\n\n```sql\nCREATE TABLE `student` (\n  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `no` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '学号',\n  `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '姓名',\n  `clazz` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '班级',\n  `major` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '专业',\n  `college` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '学院',\n  `phone` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机',\n  `email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',\n  `address` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '地址',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生信息';\n```\n\n  \n\n```sql\nINSERT INTO `fastapi_vue3`.`student` (`id`, `no`, `name`, `clazz`, `major`, `college`, `phone`, `email`, `address`) VALUES (1, '20231001', '青哥哥', '计科1班', '计算机科学与技术', '计算机学院', '13699885599', 'qgg@163.com', '安徽合肥');\nINSERT INTO `fastapi_vue3`.`student` (`id`, `no`, `name`, `clazz`, `major`, `college`, `phone`, `email`, `address`) VALUES (2, '20231002', '小林', '计科2班', '计算机科学与技术', '计算机学院', '13588557788', 'xiaolin@163.com', '江苏南京');\nINSERT INTO `fastapi_vue3`.`student` (`id`, `no`, `name`, `clazz`, `major`, `college`, `phone`, `email`, `address`) VALUES (3, '20231003', '小王', '计科3班', '计算机科学与技术', '计算机学院', '13577998822', 'xiaow@163.com', '河南郑州');\n\n```\n\n\n\n## 项目依赖\n\nrequirement.txt\n\n```plain\nfastapi\nuvicorn\ntortoise-orm   # 需要单独安装\naiomysql   # 需要单独安装\n```\n\n安装：\n\n```sql\npip install tortoise-orm\npip install aiomysql\n```\n\n## 数据库配置 setings.py\n\n```python\nTORTOISE_ORM = {\n    \"connections\": {\n        \"default\": {\n            \"engine\": \"tortoise.backends.mysql\",\n            \"credentials\": {\n                \"host\": \"localhost\",\n                \"port\": 3306,\n                \"database\": \"fastapi_vue3\",  # 数据库名称\n                \"user\": \"root\",\n                \"password\": \"123456\",  # 数据库密码\n                \"minsize\": 1,\n                \"maxsize\": 10,\n                \"charset\": \"utf8mb4\",\n                \"echo\": True\n            }\n        },\n    },\n    \"apps\": {\n        \"models\": {\n            \"models\": [\"models\"],\n            \"default_connection\": \"default\",\n        }\n    },\n    \"use_tz\": True,  # 是否使用时区\n    \"timezone\": \"Asia\u002FShanghai\"\n}\n\n\n```\n\n\n\n在 main.py 里面注册 orm\n\n```python\nfrom tortoise.contrib.fastapi import register_tortoise\n\n\n# 注册 orm\nregister_tortoise(app, config=TORTOISE_ORM, add_exception_handlers=True)\n```\n\n\n\n设置 uvicorn 启动\n\n```python\nimport uvicorn\n\n\nif __name__ == \"__main__\":\n    uvicorn.run(\"main:app\", reload=True, port=9090)\n```\n\n## 设置 Model\n\n创建 models.py 文件\n\n```python\nfrom tortoise import fields\nfrom tortoise.models import Model\n\n\nclass Student(Model):\n    id = fields.IntField(primary_key=True)\n    no = fields.CharField(max_length=255, null=True)\n    name = fields.CharField(max_length=255, null=True)\n    clazz = fields.CharField(max_length=255, null=True)\n    major = fields.CharField(max_length=255, null=True)\n    college = fields.CharField(max_length=255, null=True)\n    phone = fields.CharField(max_length=255, null=True)\n    email = fields.CharField(max_length=255, null=True)\n    address = fields.CharField(max_length=255, null=True)\n\n    class Meta:\n        table_name = 'student'\n\n\n```\n\n\n\n然后你就可以写接口，实现学生的模糊查询\n\n```python\n@app.get(\"\u002Fstudent\u002FselectAll\")\nasync def select_all(name: str = '', no: str = ''):\n    stu_list = await Student.filter(name__contains=name).filter(no__contains=no)\n    return stu_list\n\n\n```\n\n\n\n## 整个的 main.py\n\n```python\nfrom fastapi import FastAPI\nimport uvicorn\nfrom tortoise.contrib.fastapi import register_tortoise\n\nfrom models import Student\nfrom settings import TORTOISE_ORM\n\napp = FastAPI()\n\n# 注册 orm\nregister_tortoise(app, config=TORTOISE_ORM, add_exception_handlers=True)\n\n\n@app.get(\"\u002Fstudent\u002FselectAll\")\nasync def select_all(name: str = '', no: str = ''):\n    stu_list = await Student.filter(name__contains=name).filter(no__contains=no)\n    return stu_list\n\n\nif __name__ == \"__main__\":\n    uvicorn.run(\"main:app\", reload=True, port=9090)\n\n\n```\n\n","coding",1,446,2275,"2026-01-05 17:01:37","2026-05-03 22:49:02","FastAPI+Vue3零基础入门教程","fastapi-vue-zero",{"project":18,"items":19},{"id":6,"title":15,"slug":16},[20,27,28,36,43],{"id":21,"uuid":22,"project_id":6,"title":23,"type":9,"status":10,"public_enabled":10,"views":24,"sort":25,"created_at":26,"updated_at":14,"project_title":15,"project_slug":16},1162,"v00b56h7","01. 零基础小白直接上手Vue",847,2271,"2026-01-04 18:10:36",{"id":4,"uuid":5,"project_id":6,"title":7,"type":9,"status":10,"public_enabled":10,"views":11,"sort":12,"created_at":13,"updated_at":14,"project_title":15,"project_slug":16},{"id":29,"uuid":30,"project_id":6,"title":31,"type":9,"status":10,"public_enabled":10,"views":32,"sort":33,"created_at":34,"updated_at":35,"project_title":15,"project_slug":16},1167,"p7VJICb3","03. 零基础小白直接上手FastAPI开发增删改查接口",371,2279,"2026-01-06 17:43:27","2026-05-07 15:36:12.649662+00",{"id":37,"uuid":38,"project_id":6,"title":39,"type":9,"status":10,"public_enabled":10,"views":40,"sort":41,"created_at":42,"updated_at":14,"project_title":15,"project_slug":16},1172,"ptdUZ7z8","04. 零基础小白直接上手FastAPI+Vue3前后端分离开发",308,2292,"2026-01-07 16:54:01",{"id":44,"uuid":45,"project_id":6,"title":46,"type":9,"status":10,"public_enabled":10,"views":47,"sort":48,"created_at":49,"updated_at":14,"project_title":15,"project_slug":16},1173,"ngdkfhqL","05. 课程完整源码",194,2293,"2026-01-07 16:56:13"]