Столбец Enum запроса в sqlalchemy приводит к LookupError - PullRequest
0 голосов
/ 05 ноября 2018

Мне показалось, что я очень внимательно следил за документами, настраивая поле 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?

1 Ответ

0 голосов
/ 05 ноября 2018

должно быть = в enum определении, а не :

class contact_types(enum.Enum):
    unknown = 1
    incoming_text = 2
    incoming_call = 3
    outgoing_call = 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...