在 Python / Sqlalchemy 中从数据库记录访问枚举值

Yaa*_*ler 6 python enums sqlalchemy

我有一堂这样的课:

class VoteEnum(enum.Enum):
    like = "LIKE"
    dislike = "DISLIKE"
    abstain =  "ABSTAIN"
Run Code Online (Sandbox Code Playgroud)

我有一个数据库来存储这些选票:

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?
    )}
Run Code Online (Sandbox Code Playgroud)

从 sqlalchemy (在 Flask 中)检索值并打印时,出现以下错误:

类型错误:MyVotes 类型的对象不可 JSON 序列化

也许有办法调用我的 sqlalchemy 请求?也许是类方法?我很感谢人们可以提供的任何帮助。

小智 7

我也有类似的情况。这是你应该如何做的。枚举具有名称和值。

def __str__(self):
    return json.dumps({
        'id': self.id,
        'item': self.item,
        'vote': self.vote.name
    })
Run Code Online (Sandbox Code Playgroud)