Доступ к значению Enum из записи базы данных в Python / Sqlalchemy - PullRequest
2 голосов
/ 04 февраля 2020

У меня есть класс как таковой:

class VoteEnum(enum.Enum):
    like = "LIKE"
    dislike = "DISLIKE"
    abstain =  "ABSTAIN"

У меня есть база данных, в которой эти голоса сохраняются следующим образом:

class MyVotes(db.Model):
    __tablename__ = "my_votes"
    id = db.Column(db.String, primary_key=True, default=lambda: str(uuid4()))
    item = db.Column(db.String,  nullable=False),
    vote = db.Column(db.Enum(VoteEnum))

    def __str__(self):
        return json.dumps({
            "id":self.id,
            "item":self.item,
            # I want to print the value of vote?
    )}

При извлечении значений из sqlalchemy (в flask) и при печати я получаю следующую ошибку:

TypeError: Объект типа MyVotes не JSON serializable

Возможно, есть способ позвонить в моем запросе sqlalchemy? Может быть, метод класса? Я ценю любую помощь, которую могут оказать люди.

1 Ответ

1 голос
/ 05 февраля 2020

У меня похожая ситуация. Вот как вы должны это сделать. Перечисления имеют имя и значение.

def __str__(self):
    return json.dumps({
        'id': self.id,
        'item': self.item,
        'vote': self.vote.name
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...