Мне показалось, что я очень внимательно следил за документами, настраивая поле ENUM в БД Postgres с sqlalchemy, но я явно что-то делаю (надеюсь, что-то простое) неправильно.
Мой стол имеет тип contact_type
:
List of data types
Schema | Name | Internal name | Size | Elements | Owner | Access privileges | Description
--------+---------------+---------------+------+---------------+----------+-------------------+-------------
public | contact_types | contact_types | 4 | unknown +| postgres | |
| | | | incoming_text+| | |
| | | | incoming_call+| | |
| | | | outgoing_call | | |
и в таблице:
Table "public.calls"
Column | Type | Modifiers
--------------+--------------------------+----------------------------------------------------
contact_type | contact_types |
В Python я создал подкласс enum
на документы :
import enum
class contact_types(enum.Enum):
unknown: 1
incoming_text: 2
incoming_call: 3
outgoing_call: 4
и передал его модели:
class Call(db.Model):
contact_type = db.Column(db.Enum(contact_types))
Все выглядело хорошо. Вставки работают, и я могу видеть значения при просмотре таблицы, но проверка SQLAlchemy кажется несчастной при запросах. Это приводит к ошибке:
calls = Call.query.order_by(Call.time.desc()).limit(pagesize).offset(offset)
for c in calls:
print(c)
LookupError: «unknown» отсутствует среди определенных значений перечисления
«неизвестно» в Enum. Я пропускаю шаг где-нибудь, чтобы соединить запрос с классом enum?