Python sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)枚举类型

Python sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)枚举类型,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,我正在使用postgres和sqlalchemy设置一个保留表,该表保存有关特定工作应用程序的信息。当用户申请作业时,应用程序的默认状态为“挂起”。一旦接受预订,应用程序的状态将更改。我正在实现一个枚举类型来在状态之间切换。我收到一个错误,说postgres没有正确处理此枚举类型。我正在将数据库从SQLite切换到postgres,因此这可能是postgres语法的差异。提前感谢:~) [SQL:“创建类型保留\u状态\u枚举作为枚举('pending'、'confirm'、'rejected'

我正在使用postgres和sqlalchemy设置一个保留表,该表保存有关特定工作应用程序的信息。当用户申请作业时,应用程序的默认状态为“挂起”。一旦接受预订,应用程序的状态将更改。我正在实现一个枚举类型来在状态之间切换。我收到一个错误,说postgres没有正确处理此枚举类型。我正在将数据库从SQLite切换到postgres,因此这可能是postgres语法的差异。提前感谢:~)

[SQL:“创建类型保留\u状态\u枚举作为枚举('pending'、'confirm'、'rejected')”]

这是我的模型:

class Reservation(db.Model):
__tablename__ = "reservations"

id = db.Column(db.Integer, autoincrement=True, primary_key=True)
message = db.Column(db.String, nullable=False)
status = db.Column(db.Enum('pending', 'confirmed', 'rejected', name='reservation_status_enum'), default='pending')
anonymous_phone_number = db.Column(db.String, nullable=True)
guest_id = db.Column(db.Integer, db.ForeignKey('users.id'))
job_task_id = db.Column(db.Integer, db.ForeignKey('job_listings.id'))
guest = db.relationship("User", back_populates="reservations")
job_task = db.relationship("JobTask", back_populates="reservations")

def __init__(self, message, job_task, guest):
    self.message = message
    self.guest = guest
    self.job_task = job_task
    self.status = 'pending'
以下是我的sqlalchemy设置:

op.create_table('reservations',
                sa.Column('id', sa.Integer(), nullable=False),
                sa.Column('message', sa.String(), nullable=False),
                sa.Column('status', sa.Enum('pending', 'confirmed', 'rejected', name='reservation_status_enum'),
                          nullable=True),
                sa.Column('anonymous_phone_number', sa.String(), nullable=True),
                sa.Column('guest_id', sa.Integer(), nullable=True),
                sa.Column('job_task_id', sa.Integer(), nullable=True),
                sa.ForeignKeyConstraint(['guest_id'], ['users.id'], ),
                sa.ForeignKeyConstraint(['job_task_id'], ['job_listings.id'], ),
                sa.PrimaryKeyConstraint('id')
                )
这是我的stacktrace:

 File         "/Users/shai/Development/Python/mask_num/gigaware/venv/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 450, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) type "reservation_status_enum" already exists [SQL: "CREATE TYPE reservation_status_enum AS ENUM ('pending', 'confirmed', 'rejected')"]

非常感谢。这是可行的,但是当我的Travis CI构建失败并显示以下消息时:sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)type“reservation\u status\u enum”不存在第5行:status reservation\u status\u enum not NULL,“python manage.py db upgrade”命令失败并在运行期间以1退出。