ドメイン
モデル間の関係を構築するために、12種類の基本的なモデルフィールドタイプと特別なForeignKeyおよびManyTomanyフィールドがあります。
!!!tip ForeignKeyとManyTomanyフィールドのチェック関係に関する説明。
各フィールドには、pydanticモデルを作成するために使用されるsqlalchemy列クラスと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ドキュメントを参照してください。
10進数
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_placeを使用できます。
- Sqlalchemy列: sqlalchemy.DECIMAL
- タイプ(pydantic用): decimal.Decimal
!!!tip他のパラメータの説明については、pydanticドキュメントを参照してください。
日付
Date()には必須のパラメータがありません。
- Sqlalchemy列:sqlalchemy.Date
- タイプ(pydantic用):datetime.date
お時間に
Time(time zone: bool=False)必須のパラメータはありません。
タイムゾーンアウェアデータベースカラムにtime zone=Trueを渡すことができます。
- Sqlalchemy列: sqlalchemy.Time
- タイプ(pydantic用): date time.time
日付と時刻
DateTime(timezone: bool = False) 必須パラメーターはありません。
タイムゾーンアウェアデータベースカラムにtime zone=Trueを渡すことができます。
- Sqlalchemy列: sqlalchemy.DateTime
- タイプ(pydantic用): date time.date time
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に設定すると、バイト値は自動的にBase 64でデコードされた文字列に変換され、Base 64でエンコードされた文字列を渡すことで値を設定することもできます。
このように、値がutf-8と互換性がない場合でも、APIを介して値を設定できます。そうしないと、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(それぞれ文字列または16進形式)
- タイプ(pydantic用): uuid.UUID
uuid_formatパラメータは、16進数(デフォルト)または文字列値を許可します。
フォーマットに応じて、データベースは32文字または36文字を使用します。
サンプル:
- 「16進数」形式の値=
c616ab438cce49dbbf4380d109251dce(文字(32)) - 「文字列」値=
c616ab43-8cce-49db-bf43-80d109251dce(文字(36))
読み込み時は常にpython UUIDになっているので、比較して2つのフォーマット値の値を比較することができます。
列挙する
ormar->で列挙を使用する方法は2つあります。1つはsqlalchemy. Enum列タイプの専用の列挙フィールドを使用する方法で、もう1つはormarの任意のフィールドに選択を設定する方法です。
Enumフィールドは、データベースの方言固有のEnumカラムタイプ(利用可能な場合)を使用しますが、このフィールドタイプが利用できない場合は、varcharにロールバックします。
選択オプションは、常に選択したデータベースフィールドタイプに従います。
したがって、どちらを使用するかは、使用するバックエンドと、列挙フィールドで使用する列/データの種類によって異なります。
列挙体-フィールド
Enum(enum_class=Type[Enum])には必須のenum_classパラメータがあります。
- Sqlalchemy列: sqlalchemy.Enum
- 型(pydantic用):型[Enum]