2
在我能够通过使用flask-sqlalchemy的db.Enum创建枚举并在像as这样的字符串中输入值之前使用flask-migrate。Flask-Migrate在模型中存在enum类的问题
reservation_status = db.Enum('pending', 'confirmed, name='reservation_status_enum')
我决定开始使用像下面这样的枚举类。根据sqlalchemy docs工作正常。
class Status(enum.Enum):
pending = 'pending'
confirmed = 'confirmed'
rejected = 'rejected'
abandoned = 'abandoned'
reservation_status = db.Enum(Status, name='reservation_status_enum')
class Reservation(db.Model):
__tablename__ = 'reservations'
id = db.Column(db.Integer, primary_key=True)
status = db.Column(reservation_status, default=Status.pending)
...
当我尝试使用migrate命令时,我在生成的代码中得到无效的语法错误,如下所示。该错误正是写入文件的内容。
sa.Column('status', sa.Enum(<enum 'Status'>, name='reservation_status_enum'), nullable=True),
^
SyntaxError: invalid syntax
? – danidee
根据您的链接,对enum.Enum的支持已添加到版本1.1中的SQLAlchemy。最近的(非预发行版)SQLAlchemy版本是1.0.14。我不希望Alembic在SQLAlchemy 1.1发布之后才会更新。 – dirn
你知道,我被包装在我忘记版本的代码中。这是有道理的。看起来像现在我坚持字符串枚举。谢谢@dim。我正在使用sqlite测试danidee –