콘텐츠로 이동

공통 매개 변수

모든 필드 유형에는 공통 매개 변수 집합이 있습니다.

기본 키

기본 _key: bool = 거짓 -> 기본값은 거짓입니다.

외부 키가 항상 모델의 pk를 참조하도록 테이블의 기본 키 열을 설정합니다.

그것은 오직 SQL에서만 사용됩니다.

자동 증가

자동 증가: bool = Primary _key 및 type == int -> 기본 참 열이 기본 키이고 유형이 정수인 경우, 그렇지 않으면 거짓입니다.

int/bigint 필드에서만 사용할 수 있습니다.

필드에 자동 증분이 있으면 선택 사항이 됩니다.

SQL 및 Pydantic에서 사용됩니다(자동 증분을 위해 PK 필드를 선택 필드로 변경).

비어 있을 수 있음

Nullable: bool = False -> 관계형 필드를 제외한 모든 필드에 대해 기본값은 False입니다.

사용자가 다음 중 하나를 제공하면 자동으로 True로 변경됩니다.

  • 기본값 또는 함수 제공
  • 서버 _ 기본값 또는 함수 제공
  • 정수 기본 _key 필드에서 자동 증가 설정

필드가 선택 사항인지 필수 사항인지 여부를 지정하며 SQL 및 Pydantic과 함께 사용됩니다.

기본 설정은 가장 일반적인 설정이기 때문에 pydantic 및 sqlalchemy에 사용됩니다.

  • Nullable = 거짓 - 데이터베이스 열이 비어 있지 않고 필드가 pydantic으로 필요함을 나타냅니다.
  • Nullable = True - 데이터베이스 열이 비어 있고 필드가 pydantic에서 선택 사항임을 나타냅니다.

pydantic 및 데이터베이스에 대해 다른 설정을 설정하려면 아래 sql_nullable을 참조하십시오.

!!!기본적으로 모든 외래 키도 null이 될 수 있으므로 관련 모델이 필요하지 않습니다.

1
`ForeignKey` 열을 `nullable=False` 로 변경하면 필요합니다.

SQL_nullable

SQL_nullable: bool=nullable -> 기본값은 nullable 값(위에서 설명한 대로)입니다.

필드가 null이 아닌지 또는 데이터베이스에서 null만 허용되는지 여부를 지정합니다.

Pydantic 모델 및 데이터베이스에서 다른 옵션을 설정하려면 이 설정을 nullable과 함께 사용하십시오.

예를 들어 데이터베이스의 필드를 nullable로 만들 수 없지만 pydantic(즉, 서버 _기본값 사용)에서 nullable로 허용하는 것입니다. 이렇게 하면 필드가 null로 업데이트되지 않습니다(서버_기본값 설정과 마찬가지로 기본값이 사용되므로 null 값을 삽입할 수 없습니다).

기본값

기본값: 임의 = 없음 -> 기본값은 없음입니다.

다른 값이 전달되지 않으면 기본값이 사용됩니다.

삽입 시간에 호출된 SQL에서 Pydantic 모델 정의 중에 사용됩니다.

필드에 기본값이 있으면 선택 사항이 됩니다.

정적 값을 전달하거나 호출(함수 등)할 수 있습니다.

이는 SQL과 Pydantic 모두에서 사용됩니다.

사용 예:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 값 전달과 호출 가능한 포인터의 구별에 유의하십시오.

# 가치
이름: str = ormar. 문자열(max_long = 200, 기본값 = "Name")

# 함수를 호출할 때 호출 가능에 대한 포인터가 아닙니다.
# 이와 같은 정의는 시작할 때 함수를 호출하고 할당합니다.
# 함수의 결과가 기본값이므로 모든 인스턴스에 대해 일정한 값이 됩니다.
생성됨 날짜: datetim.datetime=ormar. 날짜 시간(기본값=datetime.datetime.now())

# Callable 참조를 전달하려면 (인수가 있을 수 없다는 점에 유의하십시오)
# 괄호 부족 참고 -> ormar는 각 모델에서 이 함수를 호출합니다.
생성됨 날짜: datetim.datetime=ormar. 날짜 시간(기본값=datetime.datetime.now)

# 호출 가능은 함수, 내장, 클래스 등이 될 수 있습니다.

서버 기본값

서버_기본값: 임의 = 없음 -> 기본값은 없음입니다.

다른 값이 전달되지 않으면 기본값이 사용됩니다.

서버 측에서 호출된 SQL에서 지금() 또는 sqlalchemy 텍스트() 절로 포장된 쿼리/값과 같은 IE SQL 함수를 전달할 수 있습니다.

필드에 서버 _ 기본값이 있으면 선택 사항이 됩니다.

정적 값을 전달하거나 호출(함수 등)할 수 있습니다.

그것은 오직 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())

!!! 경고 서버_ 기본값은 str,sqlalchemy.sql.elements.ClauseElement 또는 sqlalchemy.sql.elements.TextClause 를 허용하므로 i 정수 값을 설정하려면 위와 같이 sqlalchey.텍스트() 함수로 포장해야 합니다.

!!!팁 sqlalchey.gate()에 포함된 유효한 SQL(사투리별)을 전달할 수도 있습니다.

1
예를 들어 위의 `func.now()` 는 sqlite 백엔드를 위해 `text('(CURRENT_TIMESTAMP)')` 로 교환할 수 있습니다.

!!!정보 서버_ 기본값이 sqlalchemy 테이블 정의로 직접 전달되었으므로 서버 기본 sqlalchemy 문서에서 자세히 읽을 수 있습니다.

이름

이름: str = 없음 -> 기본 없음

사용할 열 이름 별칭을 지정할 수 있습니다.

이것은 예약된 키워드를 사용하는 기존 데이터베이스 구조나 ormar 필드 이름과 다른 데이터베이스 이름을 사용하려는 경우에 유용합니다.

다음 코드 조각을 예로 들어 보겠습니다.

From은 Python에서 예약된 단어로 해당 열 이름으로 모델을 만들 수 없습니다.

모델 이름을 _로 변경하고 매개 변수 이름 = 'from'을 추가하면 ormar가 데이터베이스 열 이름으로 사용됩니다.

1
2
 #. .. 간결성을 위한 나머지 모델 컷
 from _:str=ormar. 문자열(max_long=15, name='from')

마찬가지로 데이터베이스에서 외래 키 열 이름을 변경하고 원하는 관계 이름을 ormar로 유지할 수 있습니다.

1
2
 #. .. 간결성을 위한 나머지 모델 컷
앨범: 옵션 [앨범] = ormar. ForeignKey (앨범, 이름 = " al_id")

인덱스

색인: bool = 거짓 -> 기본값은 거짓입니다.

테이블 열의 인덱스를 설정합니다.

그것은 오직 SQL에서만 사용됩니다.

독특한

고유: bool = 거짓

테이블 열에 고유한 제약 조건을 설정합니다.

그것은 오직 SQL에서만 사용됩니다.

오버레이_pydantic_type

기본적으로 Ormar는 모델 생성에 적용되는 미리 정의된 Pydantic 필드 유형을 사용합니다(따라서 유형 힌트는 선택 사항).

원하는 경우 기본 제공 유형을 완전히 대체하는 자체 유형을 적용할 수 있습니다. 따라서 사용자로서 주어진 ormar 필드 유형의 맥락에서 유효한 유형을 제공하는 것은 귀하의 책임입니다.

경고: 기본적으로 기본 Pydantic 필드에 전달된 기본 제공 매개 변수를 사용해야 합니다.

1
필드 유형 섹션 또는 에서 지원되는 인수를 확인할 수 있습니다. [피단틱](https://pydantic-docs.helpmanual.io/usage/schema/#field-customisation) 문서.

!!!위험합니다. 잘못된 유형의 피단틱 필드를 설정하면 모델이 손상될 수 있으므로 작업을 알고 있는 경우에만 덮어쓰십시오.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
ormar의 기능을 깨기 쉽기 때문에 `overwrite_pydantic_type` 인수는 관계 필드에서 사용할 수 없습니다!


base_ormar_config = ormar. OrmarConfig (
    메타데이터 = 메타데이터
    데이터베이스 = 데이터베이스
)


# 샘플 덮어쓰기
클래스 덮어쓰기 테스트(ormar. 모델):
    ormar_config = base_ormar_config (테이블 이름 = "덮어쓰기")

    ID: int = ormar. 정수(prial_key = 참)
    my_int : str = ormar. 정수 (overdle_pydantic_type = PositiveInt)
    int_dict: Json = ormar. JSON (
        덮어쓰기_pydantic_type = 옵션 [Json [Dict [str, int]])