Модель Sqlalchemy с типом столбца enum

Я пытаюсь сохранить свое перечисление python в таблице. Я пытался следовать сообщению stackoverflow, но теперь получаю эту ошибку:

  File "c:\users\arrchana\pycharmprojects\be\venv\lib\site-packages\sqlalchemy\dialects\postgresql\base.py", line 2231, in format_type
    raise exc.CompileError("PostgreSQL ENUM type requires a name.")
sqlalchemy.exc.CompileError: PostgreSQL ENUM type requires a name.

Это мой код:

from appInits.db import db
from enums.goalTypes import GoalTypes
from sqlalchemy import types


class EnumAsInteger(types.TypeDecorator):
    """Column type for storing Python enums in a database INTEGER column.

    This will behave erratically if a database value does not correspond to
    a known enum value.
    """
    impl = types.Integer # underlying database type

    def __init__(self, enum_type):
        super(EnumAsInteger, self).__init__()
        self.enum_type = enum_type

    def process_bind_param(self, value, dialect):
        if isinstance(value, self.enum_type):
            return value.value
        raise ValueError('expected %s value, got %s'
            % (self.enum_type.__name__, value.__class__.__name__))

    def process_result_value(self, value, dialect):
        return self.enum_type(value)

    def copy(self, **kwargs):
        return EnumAsInteger(self.enum_type)


class Tasks(db.Model):
    __tablename__ = 'tasks'
    id = db.Column(db.Integer, primary_key=True, unique=True)
    text = db.Column(db.Text, unique=True, nullable=False)
    difficulty = db.Column(db.Integer, unique=False, nullable=False)
    tool = db.Column(EnumAsInteger(GoalTypes), nullable=False)

    def __repr__(self):
        return '<Task {}: {}, {}, {}>'.format(self.id, self.difficulty, self.tool, self.text)

    def __init__(self, id, text, difficulty, tool):
        self.id = id
        self.text = text
        self.difficulty = difficulty
        self.tool = tool

Это запись стека: база данных Sqlalchemy int to python enum


person Arrchana    schedule 03.02.2020    source источник
comment
Пожалуйста, опубликуйте полную трассировку стека, а не фрагмент.   -  person Miguel    schedule 04.02.2020