领域
有 12 种基本模型字段类型以及特殊的ForeignKey 和ManyToMany 字段来建立模型之间的关系。
!!!tip 有关ForeignKey 和ManyToMany 字段检查关系的说明。
每个字段都分配了 sqlalchemy 列类和用于创建 pydantic 模型的 python 类型。
字段类型
细绳
String(max_length: int, min_length: int = None, regex: str = None,)
有一个必需的 max_length 参数。
- Sqlalchemy 列:sqlalchemy.String
- 类型(用于 pydantic):str
!!!tip 有关其他参数的说明,请查看 pydantic 文档。
文本
Text() 没有必需的参数。
- Sqlalchemy 列:sqlalchemy.Text
- 类型(用于 pydantic):str
!!!tip 有关其他参数的说明,请查看 pydantic 文档。
布尔值
Boolean() 没有必需的参数。
- Sqlalchemy 列:sqlalchemy.Boolean
- 类型(用于 pydantic):bool
整数
Integer(minimum: int = None, maximum: int = None, multiple_of: int = None)
没有必需的参数。
- Sqlalchemy 列:sqlalchemy.Integer
- 类型(用于 pydantic):int
!!!tip 有关其他参数的说明,请查看 pydantic 文档。
大整数
BigInteger(minimum: int = None, maximum: int = None, multiple_of: int = None)
没有必需的参数。
- Sqlalchemy 列:sqlalchemy.BigInteger
- 类型(用于 pydantic):int
!!!tip 有关其他参数的说明,请查看 pydantic 文档。
小整数
SmallInteger(minimum: int = None, maximum: int = None, multiple_of: int = None)
没有必需的参数。
- Sqlalchemy 列:sqlalchemy.SmallInteger
- 类型(用于 pydantic):int
!!!tip 有关其他参数的说明,请查看 pydantic 文档。
漂浮
Float(minimum: float = None, maximum: float = None, multiple_of: int = None)
没有必需的参数。
- Sqlalchemy 列:sqlalchemy.Float
- 类型(用于 pydantic):float
!!!tip 有关其他参数的说明,请查看 pydantic 文档。
十进制
Decimal(minimum: float = None, maximum: float = None, multiple_of: int = None, precision: int = None, scale: int = None, max_digits: int = None, decimal_places: int = None)
没有必需的参数
您可以使用长度和精度参数或 max_digits 和decimal_places。
- Sqlalchemy 列:sqlalchemy.DECIMAL
- 类型(用于 pydantic):decimal.Decimal
!!!tip 有关其他参数的说明,请查看 pydantic 文档。
日期
Date() 没有必需的参数。
- Sqlalchemy 列:sqlalchemy.Date
- 类型(用于 pydantic):datetime.date
时间
Time(timezone: bool = False) 没有必需的参数。
您可以为时区感知数据库列传递 timezone=True 。
- Sqlalchemy 列:sqlalchemy.Time
- 类型(用于 pydantic):datetime.time
日期时间
DateTime(timezone: bool = False)
没有必需的参数。
您可以为时区感知数据库列传递 timezone=True 。
- Sqlalchemy 列:sqlalchemy.DateTime
- 类型(用于 pydantic):datetime.datetime
JSON
JSON() 没有必需的参数。
- Sqlalchemy 列:sqlalchemy.JSON
- 类型(用于 pydantic):pydantic.Json
大型二进制文件
LargeBinary(max_length) 有一个必需的 max_length 参数。
- Sqlalchemy 列:sqlalchemy.LargeBinary
- 类型(用于 pydantic):字节
LargeBinary 长度在某些后端(即 mysql)中用于确定字段的大小,在其他后端中它被简单地忽略,但在 ormar 中它始终是必需的。它应该是文件/字节的最大大小(以字节为单位)。
LargeBinary 也有可选的 represent_as_base64_str: bool = False
旗帜。当设置为 Trueormar 时,将自动将字节值转换为 Base64 解码的字符串,您还可以通过传递 Base64 编码的字符串来设置值。
这样,您就可以通过 API 设置值,即使值不兼容 utf-8,否则在 json 转换期间会失败。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
通用唯一标识符
UUID(uuid_format: str = 'hex')
没有必需的参数。
- Sqlalchemy 列:基于 sqlalchemy.CHAR(36) 或 sqlalchemy.CHAR(32) 字段的 ormar.UUID(分别用于字符串或十六进制格式)
- 类型(用于 pydantic):uuid.UUID
uuid_format 参数允许“十六进制”(默认)或“字符串”值。
根据格式,数据库中使用 32 或 36 个字符。
样本:
- “十六进制”格式值 =
c616ab438cce49dbbf4380d109251dce
(字符(32)) - “字符串”值=
c616ab43-8cce-49db-bf43-80d109251dce
(字符(36))
加载时它始终是 python UUID,因此您可以比较它并比较两种格式值之间的值。
枚举
在 ormar -> 中使用枚举有两种方法,一种是使用 sqlalchemy.Enum 列类型的专用枚举字段,另一种是在 ormar 中的任何字段上设置选择。
Enum 字段使用数据库方言特定的 Enum 列类型(如果可用),但如果此字段类型不可用,则回退到 varchar。
选择选项始终遵循所选的数据库字段类型。
因此,使用哪一种取决于您使用的后端以及您想要在枚举字段中使用的列/数据类型。
枚举 - 字段
Enum(enum_class=Type[Enum]) 有一个必需的 enum_class 参数。
- Sqlalchemy 列:sqlalchemy.Enum
- 类型(用于 pydantic):类型[Enum]