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

Общие параметры

Все типы полей имеют набор общих параметров.

Первичный ключ

Primary_key: bool = False -> Ложь по умолчанию.

Установите ключевые столбцы в таблице, внешний ключ всегда ссылается на pk модели.

Используется только в SQL.

Автоматический приращение

Автоприращение: bool = Primary_key и type == int-> Если столбец является первичным ключом и имеет тип Integer, то по умолчанию значение True или False в противном случае.

Использовать можно только с полем int/bigint.

Если поле имеет автоматическое приращение, оно становится необязательным.

Используется в sql и pydantic (изменение поля pk на дополнительное поле автоприращения).

Может быть пустым.

Пусто: bool = False -> По умолчанию используется значение False для всех полей, кроме связанных.

Автоматически изменяется на True, если пользователь указывает одно из следующих значений:

  • Предоставляет значения по умолчанию или функции
  • Предоставляет значение или функцию сервера_default
  • Установка автоматического приращения в поле Integerprimary_key

Указывает, является ли поле необязательным или обязательным для использования с SQL и pydantic.

По умолчанию используется для pydantic и sqlchemy, так как это наиболее распространенные настройки.

  • nullable=False -означает, что столбец базы данных не пуст и поля необходимы в pydantic
  • nullable=True -означает, что база данных пуста, а поля являются необязательными в pydantic.

Если вы хотите установить разные параметры для pydantic и базы данных, см. sql_nullable ниже.

!!!Обратите внимание, что по умолчанию все внешние ключи также могут быть пустыми, что означает, что не требуется никакой соответствующей модели.

1
Если вы измените цвет `ForeignKey` column to `nullable=False`, то это необходимо.

sql\nullable

sql_nullable: bool = nullable -> Значение по умолчанию nullable (как описано выше).

Указывает, не является ли поле пустым или может быть пустым только в базе данных.

Используйте эту настройку вместе с nullable только в том случае, если вы хотите задать разные параметры в модели и базе данных pydantic.

В качестве примера можно сделать поле в базе данных пустым, но оставить его пустым в 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
# note the distinction between passing a value and Callable pointer

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

Если вы называете себя function it's not a pointer to Callable
# a definition like this will call the function at startup and assign
Результаты выполнения функции по умолчанию, так же как это будет иметь значение для всех instances
created_date: datetime = ormar.DateTime (default= datetime.datetime.now ())

Если вы хотите пройти через Callable reference (примечание that it can not have arguments)
# note lack of the parenthesis -ormar will call this function for you on each model
created_date: datetime = ormar.DateTime (default= datetime.datetime.now)

# Callable может быть функцией, builtin, class etc.

Параметры сервера по умолчанию

Сервер_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())

!!! warning server_default принимает str,sqlalchemy.sql.elements.ClauseElement или sqlalchemy.sql.elements.TextClause, поэтому, если вы хотите задать целое значение ie, вам нужно упаковать его в функцию sqlalchemy.text (), как показано выше.

!!!Вы также можете передавать допустимый SQL, содержащийся в sqlchemy.text ().

1
For example `func.now()` above could be exchanged for `text('(CURRENT_TIMESTAMP)')` for sqlite backend

!!!info server_default передается непосредственно в определение таблицы sqlchemy, поэтому вы можете узнать больше в документе sqlalchemy по умолчанию на сервере

Имя и фамилия

name: str = None -> По умолчанию None

Позволяет указать используемый псевдоним имени имени.

Это полезно для существующей структуры базы данных с зарезервированными ключевыми словами или если требуется использовать имя базы данных, отличное от имени поля ormar.

Возьмем, к примеру, следующий фрагмент кода.

from в качестве ключевого слова в Python не позволяет создавать модели с помощью столбца.

Изменение имени модели на from_и добавление параметра name='from' приводит к тому, что ormar использует from в качестве имени столбца базы данных.

1
2
 Ремонт модели для бревити»
 from_: str = ormar.String(max_length =15, name ='from')

Аналогичным образом, можно изменить имя столбца внешнего ключа в базе данных, сохранив при этом имя связи в ormar:

1
2
 Ремонт модели для бревити»
Альбом: Optional[Album] = ormar.ForeignKey(Album, name="album")

Индекс

Индекс: bool = False -> Ложь по умолчанию,

Задает индекс столбцов таблицы.

Используется только в SQL.

Уникальный.

Название: bool = False

Установка уникальных зависимостей для столбцов таблицы.

Используется только в SQL.

Перекрытие_pydantic_type

По умолчанию в ormar используется стандартный тип поля pydantic, который применяется к созданию модели (поэтому подсказки типа являются необязательными).

Если хотите, вы можете применить свой собственный тип, который полностью заменит встроенные типы. Таким образом, как пользователь, вы несете ответственность за предоставление типов, которые действительны в контексте данного типа поля ormar.

Обратите внимание, что по умолчанию вы должны использовать встроенные параметры, передаваемые в нижние поля pydantic.

1
Вы можете проверить, что происходит в поле действия или в поле [pydantic](https://pydantic-docs.helpmanual.io/usage/schema/#field-customisation) docs.

!!!Опасная настройка поля pydantic с неправильным типом может повредить вашу модель, поэтому закройте его только тогда, когда вы знаете, что делаете.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
As it's легко сделать перерыв в работе ормара the `overwrite_pydantic_type` argument is not available on relation fields!


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


# sample overwrites
Class OverwriteTest(модель ormar):
    ormar_config = base_ormar_config.copy (tablename="overwrites")

    id: int = ormar.Integer(primary_key =True)
    my_int: str = ormar.Integer(overwrite_pydantic_type =PositiveInt)
    Слайн-ролл ((
        overwrite_pydantic_type =Optional[Json[Dict[str, int]]])