1.前言

一直想理解清楚FastAPI框架的异步框架tortoise,据说这个框架使用起来能够更好地与FastAPI异步框架继承,但是FastAPI框架官方介绍的是sqlalchemy框架,它是同步的,是不支持await的。所以跟数据库进行交互时候,使用异步的ORM框架是非常合适的,FastAPI框架受到Django框架的ORM启发,异步ORM框架tortoise应运而生。

2.区别

(1)SQLAlchemy是一个成熟的ORM(对象关系映射)库,而Tortoise则是一个异步ORM库。SQLAlchemy可以与各种关系型数据库配合使用,而Tortoise则主要与异步数据库(如PostgreSQL、MySQL和SQLite)配合使用。

(2)SQLAlchemy提供了完整的ORM功能,可以将数据库表映射到Python类,同时提供高级查询、事务和连接池等功能。Tortoise也提供了类似的ORM功能,但是专注于异步操作,可以与异步框架(如FastAPI)更好地集成。

(3)SQLAlchemy支持多种查询语言(如SQL、ORM查询等),可根据特定需求进行自由切换。Tortoise则采用异步查询语法,例如使用Tortoise提供的查询构建器进行操作。

(4)对于数据库迁移和模式管理,SQLAlchemy提供了Alembic工具,可以轻松地执行数据库迁移和管理模式变更。而Tortoise则有自己的数据库迁移工具Aerich,可以方便地进行模式管理和迁移,迁移的方法类似于Flask框架的flask-sqlalchemy框架,但是Aerich不支持跨数据库迁移,因此需要在本地环境和生产环境都使用相同的数据库引擎。

综上所述,SQLAlchemy和Tortoise是两种不同的ORM库,适用于不同的场景和需求。SQLAlchemy更适合传统的同步应用程序,而Tortoise则更适合异步应用程序,并且能够更好地与FastAPI等异步框架集成。选择哪个库取决于你的具体需求和技术栈

3.Tortoise的安装

pip install tortoise-orm

4.设置Tortoise引擎

在FastAPI的核心对象所在的文件中配置引擎

# 需要将主要配置项放在一个TORTOISE_ORM变量中

TORTOISE_ORM = {

"conections": {"defult": "sqlite://应用包名.db"},

"app": {"models": {"models": ["给相关模型1的命名1", "给相关模型2的命名2"],"default_connection": "defult"}}

}

# 调用为FastAPI设置Tortoise的函数

register_tortoise(

app, # FastAPI核心对象

config=TORTOISE_ORM, # 上面的TORTOISE_ORM变量,也就是Tortoise的主要配置

generate_schema=True, # 自动生成数据库中创建表

add_excption_handlers=True # 自定义异常捕获程序,捕获tortoise的异常并返回错误响应

)

The End !

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: