常用参数
所有字段类型都有一组通用参数。
主键
Primary_key: bool = False -> 默认为 False。
设置表上的主键列,外键始终引用模型的 pk。
仅在 sql 中使用。
自动增量
自动增量:bool = Primary_key 且 type == int -> 如果列是主键且类型为 Integer,则默认为 True,否则为 False。
只能与 int/bigint 字段一起使用。
如果字段具有自动增量,则它变为可选。
在 sql 和 pydantic 中使用(将 pk 字段更改为自动增量的可选字段)。
可为空的
可空:bool = False -> 对于除关系字段之外的所有字段默认为 False。
如果用户提供以下其中一项,则自动更改为 True:
- 提供默认值或函数
- 提供了 server_default 值或函数
- 在 Integerprimary_key 字段上设置自动增量
指定字段是可选的还是必需的,与 sql 和 pydantic 一起使用。
默认情况下,用于 pydantic 和 sqlalchemy,因为这些是最常见的设置:
- nullable=False - 表示数据库列不为空并且 pydantic 中需要字段
- nullable=True - 表示数据库列为空并且字段在 pydantic 中是可选的
如果你想为 pydantic 和数据库设置不同的设置,请参阅下面的 sql_nullable 。
!!!注意 默认情况下,所有外键也可为空,这意味着不需要相关模型。
1 |
|
sql_nullable
sql_nullable: bool = nullable -> 默认为 nullable 值(如上所述)。
指定字段是否不为空或仅允许数据库中为空。
仅当您想在 pydantic 模型和数据库中设置不同的选项时,才将此设置与 nullable 结合使用。
示例用法可能是使数据库中的字段不为空,但允许该字段在 pydantic 中可为空(即使用 server_default 值)。这将阻止字段更新为空(与 server_default 设置一样,您不能插入空值,因为将使用默认值)
默认
默认值:Any = None -> 默认为 None。
如果没有传递其他值,则使用默认值。
在插入时调用的 sql 中,在 pydantic 模型定义期间使用。
如果该字段有默认值,则它变为可选。
您可以传递静态值或可调用(函数等)
在 sql 和 pydantic 中都使用。
使用示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
服务器默认值
server_default: Any = None -> 默认为 None。
如果没有传递其他值,则使用默认值。
在服务器端调用的 sql 中,因此您可以传递 ie sql 函数(如 now() 或包装在 sqlalchemy text() 子句中的查询/值)。
如果该字段具有 server_default 值,则它变为可选。
您可以传递静态值或可调用(函数等)
仅在 sql 中使用。
使用示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
!!! warning server_default 接受 str, sqlalchemy.sql.elements.ClauseElement
或者 sqlalchemy.sql.elements.TextClause
因此,如果您想设置 ie 整数值,您需要将其包装在 sqlalchemy.text() 函数中,如上面所示
!!!提示您还可以传递包含在 sqlalchemy.text() 中的有效 sql(特定于方言)
1 |
|
!!!info server_default 直接传递到 sqlalchemy 表定义,因此您可以在服务器默认 sqlalchemy 文档中阅读更多信息
姓名
name: str = None -> 默认为 None
允许您指定要使用的列名别名。
对于使用保留关键字的现有数据库结构很有用,或者如果您想使用与 ormar 字段名称不同的数据库名称。
以下面的代码片段为例。
from 作为 python 中的保留字,将阻止您使用该列名创建模型。
将模型名称更改为 from_ 并添加参数 name='from' 将导致 ormar 使用 from 作为数据库列名称。
1 2 |
|
同样,您可以更改数据库中的外键列名称,同时保留 ormar 中所需的关系名称:
1 2 |
|
指数
索引:bool = False -> 默认为False,
设置表列的索引。
仅在 sql 中使用。
独特的
唯一:bool = False
设置表列的唯一约束。
仅在 sql 中使用。
覆盖_pydantic_type
默认情况下,ormar 使用预定义的 pydantic 字段类型,该类型应用于模型创建(因此类型提示是可选的)。
如果您愿意,您可以应用自己的类型,这将完全取代内置类型。因此,作为用户,您有责任提供在给定 ormar 字段类型的上下文中有效的类型。
警告注意,默认情况下,您应该使用传递给底层 pydantic 字段的内置参数。
1 |
|
!!!危险 设置错误类型的 pydantic 字段可能会破坏您的模型,因此只有当您知道自己在做什么时才覆盖它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|