Tortoise-ORM FastAPI 集成¶
我们有一个轻量级集成工具 tortoise.contrib.fastapi
,其中有一个类 RegisterTortoise
,可用于在生命周期上下文中设置/清理 Tortoise-ORM。
FastAPI 基本上是 Starlette & Pydantic,但以一种非常特殊的方式。
请参阅 FastAPI 示例 并查看 Pydantic 序列化 教程。
参考¶
- class tortoise.contrib.fastapi.HTTPNotFoundError(**data)[源代码]¶
基类:
BaseModel
- detail : str¶
-
model_computed_fields : ClassVar[dict[str, ComputedFieldInfo]] =
{}
¶ 计算字段名称及其对应的 ComputedFieldInfo 对象的字典。
-
model_config : ClassVar[ConfigDict] =
{}
¶ 模型配置,应符合 [ConfigDict][pydantic.config.ConfigDict] 的字典。
-
model_fields : ClassVar[dict[str, FieldInfo]] =
{'detail': FieldInfo(annotation=str, required=True)}
¶ 模型上定义的字段的元数据,字段名称到 [FieldInfo][pydantic.fields.FieldInfo] 的映射。
这替换了 Pydantic V1 中的 Model.__fields__。
-
class tortoise.contrib.fastapi.RegisterTortoise(app, config=
None
, config_file=None
, db_url=None
, modules=None
, generate_schemas=False
, add_exception_handlers=False
, use_tz=False
, timezone='UTC'
)[source]¶ 基类:
AbstractAsyncContextManager
在 FastAPI 应用程序的生命周期内使用设置和拆除在 Tortoise-ORM 中注册。
您可以仅使用
config
、config_file
和(db_url, modules)
中的一个进行配置。- 参数:¶
- app : FastAPI¶
FastAPI 应用程序。
- config : Optional[dict]¶
包含配置的字典
示例
{ 'connections': { # Dict format for connection 'default': { 'engine': 'tortoise.backends.asyncpg', 'credentials': { 'host': 'localhost', 'port': '5432', 'user': 'tortoise', 'password': 'qwerty123', 'database': 'test', } }, # Using a DB_URL string 'default': 'postgres://postgres:qwerty123@localhost:5432/events' }, 'apps': { 'models': { 'models': ['__main__'], # If no default_connection specified, defaults to 'default' 'default_connection': 'default', } } }
- config_file : Optional[str]¶
指向 .json 或 .yml(如果安装了 PyYAML)文件的路径,其中包含与上述格式相同的配置。
- db_url : Optional[str]¶
使用 DB_URL 字符串。请参阅 DB_URL
- modules : Optional[Dict[str, Iterable[Union[str, ModuleType]]]]¶
字典
key
: [list_of_modules
],定义了应该为模型发现的“应用程序”和模块。- generate_schemas : bool¶
立即生成架构。仅对开发环境或 SQLite
:memory:
数据库有用- add_exception_handlers : bool¶
True 表示为
DoesNotExist
和IntegrityError
添加一些自动异常处理程序。对于生产系统不建议这样做,因为它可能会泄露数据。- use_tz : bool¶
布尔值,指定 datetime 默认是否具有时区感知。
- timezone : str¶
要使用的时区,默认值为 UTC。
- 引发:¶
ConfigurationError – 对于任何配置错误
-
tortoise.contrib.fastapi.register_tortoise(app, config=
None
, config_file=None
, db_url=None
, modules=None
, generate_schemas=False
, add_exception_handlers=False
)[源代码]¶ 注册
startup
和shutdown
事件,以便在 FastAPI 应用程序中设置和关闭 Tortoise-ORM。您可以仅使用
config
、config_file
和(db_url, modules)
中的一个进行配置。- 参数:¶
- app : 'FastAPI'¶
FastAPI 应用程序。
- config : Optional[dict]¶
包含配置的字典
示例
{ 'connections': { # Dict format for connection 'default': { 'engine': 'tortoise.backends.asyncpg', 'credentials': { 'host': 'localhost', 'port': '5432', 'user': 'tortoise', 'password': 'qwerty123', 'database': 'test', } }, # Using a DB_URL string 'default': 'postgres://postgres:qwerty123@localhost:5432/events' }, 'apps': { 'models': { 'models': ['__main__'], # If no default_connection specified, defaults to 'default' 'default_connection': 'default', } } }
- config_file : Optional[str]¶
指向 .json 或 .yml(如果安装了 PyYAML)文件的路径,其中包含与上述格式相同的配置。
- db_url : Optional[str]¶
使用 DB_URL 字符串。请参阅 DB_URL
- modules : Optional[Dict[str, Iterable[Union[str, ModuleType]]]]¶
字典
key
: [list_of_modules
],定义了应该为模型发现的“应用程序”和模块。- generate_schemas : 布尔值¶
立即生成架构。仅对开发环境或 SQLite
:memory:
数据库有用- add_exception_handlers : 布尔值¶
True 表示为
DoesNotExist
和IntegrityError
添加一些自动异常处理程序。对于生产系统不建议这样做,因为它可能会泄露数据。
- 引发:¶
ConfigurationError – 对于任何配置错误
- 返回类型:¶
无