Перейти к содержанию

Область применения

Существует 12 основных типов полей модели, а также специальные поля ForeignKey и ManyToMany для установления связей между моделями.

!!!tip Инструкции по проверке связей между ForeignKey и ManyToMany.

Каждому поле присваивается класс столбца sqlchemy и тип Python, используемый для создания pydantic модели.

Тип поля

Пряжка

String(max_length: int, min_length: int = None, regex: str = None,) Существует необходимый параметр max_length.

  • Sqlalchemy-String
  • Тип (для pydantic): str

!!!tip Для получения дополнительной информации см. документацию pydantic.

Текст

Текст () не имеет обязательных параметров.

  • Название: sqlalchemy.Text
  • Тип (для pydantic): str

!!!tip Для получения дополнительной информации см. документацию pydantic.

Логическое значение

Boolean() не имеет обязательных параметров.

  • Название: sqlalchemy.Boolean
  • Тип (для pydantic): bool

Целое число

Integer(minimum: int = None, maximum: int = None, multiple_of: int = None) Необходимых параметров нет.

  • Название: sqlalchemy.Integer
  • Тип (для pydantic): int

!!!tip Для получения дополнительной информации см. документацию pydantic.

Большое целое число

BigInteger(minimum: int = None, maximum: int = None, multiple_of: int = None) Необходимых параметров нет.

  • Название: sqlalchemy.BigInteger
  • Тип (для pydantic): int

!!!tip Для получения дополнительной информации см. документацию pydantic.

Малое целое число

SmallInteger(minimum: int = None, maximum: int = None, multiple_of: int = None) Необходимых параметров нет.

  • Название: sqlalchemy: SmallInteger
  • Тип (для pydantic): int

!!!tip Для получения дополнительной информации см. документацию pydantic.

Плавание

Float(minimum: float = None, maximum: float = None, multiple_of: int = None) Необходимых параметров нет.

  • Оригинальное название: 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: Decimal
  • Тип (для pydantic): decimal.Decimal

!!!tip Для получения дополнительной информации см. документацию pydantic.

Даты

Date() не имеет необходимых параметров.

  • Название: sqlalchemy.Date
  • Тип (для pydantic): datetime.date

Время

Время (timezone: bool = False) не имеет обязательных параметров.

Можно передать timezone=True столбец базы данных с учетом часового пояса.

  • Название: sqlalchemy.Time
  • Тип (для pydantic): datetime.time

Дата и время

DateTime(timezone: bool = False) Необходимых параметров нет.

Можно передать timezone=True столбец базы данных с учетом часового пояса.

  • Название: sqlalchemy.DateTime
  • Тип (для pydantic): datetime.datetime

JSON

JSON() не имеет необходимых параметров.

  • Серия Sqlalchemy: sqlchemy. JSON
  • Тип (для pydantic): pydantic. Json

Большие двоичные файлы

LargeBinary(max_length) имеет требуемый параметр max_length.

  • Оригинальное название: Sqlalchemy: Large Binary
  • Тип (для 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
Импорт base64
# other imports skipped for brevity»


«Органа»((
    metadata=metadata
    database= база данных
)


Class Large BinaryStr (модель):
    ormar_config = base_ormar_config.copy (tablename="my_str_blobs")

    id: int = ormar.Integer(primary_key =True)
    «Слайн»(((
        max_length = 10000, represent_as_base64_str=True
    )

# set non utf-8 compliant value - note this can be passed by api (i.e. fastapi) in json
item = Large BinaryStr (test_binary =base64.b64encode(b"\xc3\x28").decode())

assert item. test_binary == base64.b64encode(b"\xc3\x28").decode()

# technical note that underlying value is still bytes and will be saved as so
assert item.__dict__["test_binary"] = b"\xc3\x28"

Универсальный уникальный идентификатор

UUID(uuid_format: str = 'hex') Необходимых параметров нет.

Столбец* Sqlalchemy: ormar.UUID на основе поля sqlalchemy.CHAR (36) или sqlalchemy.CHAR (32)(для строки или шестнадцатеричного формата соответственно) * Тип (для pydantic): uuid.UID

Параметр uuuid_format допускает значения «Шестнадцатеричных»(по умолчанию) или «Строки».

В зависимости от формата в базе данных используется 32 или 36 символов.

Образцы:

Значение формата* «шестнадцатеричные»=c616ab438cce49dbbf4380d109251dce(символ (32)) * «Строки»=c616ab43-8cce-49db-bf43-80d109251dce(символ (36))

При загрузке он всегда является UUID Python, поэтому вы можете сравнить его и сравнить значения между значениями двух форматов.

Перечисление

Существует два способа использования перечисления в ormar ->: один из них состоит в том, чтобы использовать специальные поля перечисления типа столбца sqlchemy.Enum, а другой-в том, чтобы задать выбор в любом поле ormar.

В поле Enum используется тип столбца Enum (если он доступен), относящийся к диалекту базы данных, но, если этот тип поля недоступен, он возвращается к varchar.

Выбор параметров всегда соответствует выбранному типу поля базы данных.

Таким образом, какой тип используется, зависит от используемого бэкэнда и типа столбцов/данных, которые вы хотите использовать в поле перечисления.

Перечисление-Поля

Enum(enum_class =Type[Enum]) имеет один обязательный параметр enum_class.

  • Название: sqlalchemy.Enum
  • Тип (для pydantic): Тип[Enum]