今天来讲一下fastapi如何链接数据库,上一节已经讲过了基本的环境搭建,所以就不在啰嗦了,这里使用的是mysql,基本的mysql环境搭建大家可以自行去网上搜索,这里不再说明,接下来直接上代码:
1、首先需要安装tortoise-orm,我们是通过orm模型去操作数据库,使用orm模型操作的好处是不需要使用sql命令,直接使用函数进行操作,能有效的防止sql注入式攻击,操作也会简洁一些,
pip install tortoise
2、接下来需要在入口文件进行导入和挂载:
from tortoise.contrib.fastapi import register_tortoise
register_tortoise(
app,
db_url='mysql://用户名:密码@数据库ip:数据库端口/用户名',
modules={"models": ["models.user", "models.article"]},
generate_schemas=True,
add_exception_handlers=True,
)
这里的路径我给大家标注了一下,自己配置的时候要记得更换哦
剩下的配置分别是:
- generate_schemas:是否自动创建数据库和表结构,这里设置为 True,表示在启动应用时如果相关表不存在,则会自动创建。
- add_exception_handlers:是否添加 Tortoise ORM 的异常处理器
这里的app,是我们的fastapi主程序
3、接下来要说明一下modules了,这里的modules是我们存放模型的地方,是使用类来进行创建的表:
from tortoise import Model, fields
class Article(Model):
userid = fields.IntField()
id = fields.IntField(pk=True)
title = fields.CharField(max_length=30)
content = fields.CharField(max_length=9999)
createTime = fields.DatetimeField(auto_now_add=True)
updateTime = fields.DatetimeField(auto_now=True)
这样我们在启动当前服务的时候,就会通过tortoise,来创建一张表了
然后我们就可以这么去操作:
@app.post("/announce", summary='发布文章')
async def article_announce(body: Announce):
await Article(userid=token, title=body.title, content=body.content).save()
return JSONResponse(status_code=status.HTTP_200_OK)
这就是最简单的往数据库中添加数据了,这里的Announce类呢是:
from pydantic import BaseModel, Field
class Announce(BaseModel):
title: str = Field(examples=["标题"])
content: str = Field(examples=["内容"])
这里我们需要从pydantic模型库中去导入我们需要继承的类,以及属性