在我能够通过使用 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
最佳答案
感谢用户@dim,我能够通过将 sqlalchemy 升级到 beta 1.1.0b3 来解决问题。在大多数情况下,这是用户错误(我)。
我所做的只是
pip uninstall sqlalchemy
pip install sqlalchemy==1.1.0b3
关于python - Flask-Migrate 模型中的枚举类有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39181294/