今天来讲一下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模型库中去导入我们需要继承的类,以及属性

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐