Email or username:

Password:

Forgot your password?
Moana Rijndael 🍍🍕

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

и теперь выбор, либо писать конвертацию из строчек, либо сделать так чтобы сервис слал циферки...

18 comments
winnie13ua

@mo бред.. данные с другого сервиса напрямую в бл летят без доп обработки?)

Какие-то питоно-проблемы.

Или сервис напрямую в БД ходит?

P.S. в постгресе и майскл есть нативные енумы.

Moana Rijndael 🍍🍕

@winnie13ua не, это мой внутренний сервис, он шлёт события в брокера

Moana Rijndael 🍍🍕

@winnie13ua ну и да, нативные енамы
1. К сожалению, орм не умеет
2. Хз, как у них с добавлением вариантов
3. Всё равно будут храниться как число)

Moana Rijndael 🍍🍕

@winnie13ua
4. Все равно придется парсить из строчек, если сервис будет их слать

Moana Rijndael 🍍🍕

@winnie13ua поэтому я сделала так, чтобы сервис слал циферки. Pydantic с ормом умеют их хавать и превращать в питоновские IntEnum

winnie13ua

@mo ну так норм решение, че)

Экстравертофоб

@mo
Главное, не переименовывать
VS
Главное, местами не менять

Moana Rijndael 🍍🍕

@alexey_stalker от перестановки оно не поменяется. В питоне варианты енамов нумеруются явно

Moana Rijndael 🍍🍕

@alexey_stalker у него прост нет синтаксиса для енамов, и самый простой вариант это

class Example(int, Enum):
VARIANT = 1

и разрулить магией рефлексии)

Экстравертофоб

@mo в смысле, нет синтаксиса? Конструкция есть, а синтаксиса нет?

Moana Rijndael 🍍🍕

@alexey_stalker ну да. Енам реализуется через класс и магию рефлексии :р

Moana Rijndael 🍍🍕

@alexey_stalker но эта магия уже есть в стандартной либе, поэтому проблем не вызывает.

Экстравертофоб

@mo ну то есть енамов как конструкции в питоне (как языке) нет, нужно реализовывать самостоятельно?

Экстравертофоб

@mo звучит странно, пойду погуглю

Moana Rijndael 🍍🍕

@alexey_stalker енамов как конструкции в питоне нет, нужно импортировать магический превращатор из стандартной либы и использовать синтаксис классов

from enum import Enum

class MyEnum(TYPE, Enum):
VARIANT = value

Сделает енам из объектов типа TYPE. Для строчек и интов есть уже готовые IntEnum и StrEnum, по поведению идентичны наследованию от str/int и Enum одновременно

winnie13ua

@mo @alexey_stalker

Я только-что понял, что в питоне есть множественные наследование о_О. Жесть.

Go Up