コンテンツにスキップ

一般的なパラメータ

すべてのフィールドタイプに共通のパラメーターセットがあります。

主キー

主キー: bool=False->デフォルトはFalseです。

テーブルのプライマリキーカラムを設定し、外部キーは常にモデルのpkを参照します。

SQLでのみ使用します。

自動増分

自動増分: bool=Prime_key、type==int->列がプライマリキーでタイプがIntegerの場合、デフォルトはTrue、それ以外の場合はFalseです。

int/bigintフィールドでのみ使用できます。

フィールドに自動増分がある場合は、オプションになります。

SQLとpydanticで使用します(pkフィールドを自動増分のオプションフィールドに変更します)。

空にすることができます

空: bool=False->リレーショナルフィールド以外のすべてのフィールドはデフォルトでFalseです。

ユーザーが次のいずれかを指定すると、自動的にTrueに変更されます。

  • デフォルト値または関数を提供します
  • server_default値または関数を提供します
  • 整数プライマリ_keyフィールドに自動増分を設定します

フィールドがオプションか必須かを指定し、SQLとpydanticで使用します。

これらは最も一般的な設定であるため、デフォルトではpydanticとsqlalchemyに使用されます。

  • nullable=False-データベースカラムが空ではなく、pydanticでフィールドが必要であることを示します
  • nullable=True-データベースが空で、フィールドがpydanticでオプションであることを示します

pydanticとデータベースで異なる設定をしたい場合は、以下のsql_nullableを参照してください。

!!!(注)デフォルトでは、すべての外部キーも空にすることができます。つまり、関連するモデルは必要ありません。

1
`ForeignKey` カラムを `nullable=False` に変更すると必須になります。

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
#値を渡すことと呼び出し可能なポインタの違いに注意してください

#値
name: str=ormar.String(max_length=200,default="Name")

#関数を呼び出すとき、それはCallableへのポインタではないことに注意してください。
#このような定義は、起動時に関数を呼び出して割り当てます。
#関数の結果をデフォルトにするので、すべてのインスタンスで一定の値になります。
作成日: date time.date time=or mar.DateTime(デフォルト=datetime.datetime.now())

#Callable参照を渡したい場合(引数を持つことはできません)
括弧がないことに注意してください->ormarは各モデルでこの関数を呼び出します
作成日: date time.date time=or mar.DateTime(デフォルト=datetime.datetime.now)

#Callableは関数、組み込み、クラスなどです。

サーバーのデフォルト

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
from datetime import datetime

import databases
import ormar
import sqlalchemy
from sqlalchemy import func, text

database = databases.Database("sqlite:///test.db")
metadata = sqlalchemy.MetaData()


class Product(ormar.Model):

    ormar_config = ormar.OrmarConfig(
        database=database, metadata=metadata, tablename="product"
    )

    id: int = ormar.Integer(primary_key=True)
    name: str = ormar.String(max_length=100)
    company: str = ormar.String(max_length=200, server_default="Acme")
    sort_order: int = ormar.Integer(server_default=text("10"))
    created: datetime = ormar.DateTime(server_default=func.now())

!!! 警告サーバー_defaultはstr、sqlalchemy.sql.elements.ClauseElement、または sqlalchemy.sql.elements.TextClause を受け入れますしたがって、ie整数値を設定する場合は、上記のようにsqlalchemy. text()関数にラップする必要があります

!!!ヒントsqlalchemy. text()に含まれる有効なSQL(方言固有)を渡すこともできます

1
例えば、上記の `func.now()` は、sqliteバックエンドの `text('(CURRENT_TIMESTAMP)')` と交換することができます。

!!!info server_defaultはsqlalchemyテーブル定義に直接渡されるため、サーバーのデフォルトのsqlalchemyドキュメントで詳細を読むことができます

お名前

name: str=None->デフォルトはNoneです

使用するカラム名エイリアスを指定できます。

キーワードを保持した既存のデータベース構造を使用する場合や、ormarフィールド名とは異なるデータベース名を使用する場合に便利です。

次のコードスニペットを例にとります。

Pythonの予約語としてfromを使用すると、そのカラム名を使用してモデルを作成できなくなります。

モデル名をfrom_に変更し、引数name='from'を追加すると、ormarはデータベースのカラム名としてfromを使用します。

1
2
 #。。。 モデルの残りの部分は簡潔にカット
 from_: str=ormar.String(max_length=15,name='from')

同様に、データベースの外部キーカラム名を変更しながら、ormarで必要なリレーションシップ名を保持できます。

1
2
 #。。。 モデルの残りの部分は簡潔にカット
アルバム:オプション[Album]=ormar. ForeignKey(Album,name="Album_id")

インデックス

インデックス: bool=False->デフォルトはFalseです。

テーブル列のインデックスを設定します。

SQLでのみ使用します。

ユニークな

唯一: bool=False

テーブルカラムの一意の制約を設定します。

SQLでのみ使用します。

カバー_pydantic_type

デフォルトでは、ormarはモデル作成に適用される事前定義されたpydanticフィールドタイプを使用します(したがって、タイプヒントはオプションです)。

必要に応じて、組み込み型を完全に置き換える独自の型を適用できます。したがって、ユーザーとして、指定されたormarフィールド型のコンテキストで有効な型を提供する責任があります。

警告デフォルトでは、基礎となるpydanticフィールドに渡される組み込みパラメータを使用する必要があることに注意してください。

1
フィールドタイプセクションやフィールドタイプセクションでサポートされている引数を確認することができます。 [ピダンティック](https://pydantic-docs.helpmanual.io/usage/schema/#field-customisation) ドキュメントだ

!!!危険間違ったタイプのpydanticフィールドを設定すると、モデルが破壊される可能性があるため、何をしているのかがわかっている場合にのみ上書きしてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
オーマーの機能を壊しやすいので `overwrite_pydantic_type` 引数はリレーションフィールドでは使用できません!


base_ormar_config=ormar. OrmarConfig(ベースの設定
    メタデータ
    データベース
)


#サンプル上書き
class Overwrite Test(ormar. Model):
    or_config=base_or_config. copy(tablename="上書き")

    id: int=ormar.Integer(プライマリキー=True)
    my_int: str=ormar.Integer(上書き_pydantic_type=PositiveInt)
    JSON=ormar. JSON(
        上書き_pydantic_type=オプション[Json[Dict[str, int]]])