【发布时间】:2017-01-04 00:16:47
【问题描述】:
在我能够通过使用 flask-sqlalchemy 的 db.Enum 创建枚举之前使用 flask-migrate 并将值作为字符串输入。
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
【问题讨论】:
-
你使用的是哪个数据库?
-
根据您的链接,SQLAlchemy 1.1 版中添加了对
enum.Enum的支持。 SQLAlchemy 的最新(非预发布)版本是 1.0.14。在 SQLAlchemy 1.1 发布之前,我不希望 Alembic 更新。 -
你知道,我被代码包裹住了,我忘记了版本控制。这是有道理的。似乎现在我被字符串枚举困住了。谢谢@dim。我正在使用 sqlite 测试 danidee
标签: python flask enums sqlalchemy alembic