在 SQLAlchemy 中删除约束
Dropping constraint in SQLAlchemy
我在 Pyramid-SQLAlchemy 中创建了一个 class,我的 models.py 包含以下内容:
class Students(Base):
__tablename__ = 'students'
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
name = Column(String(50, convert_unicode=True), nullable=False, unique=True)
我不小心创建了 unique 约束和 运行 initializedb.py 命令,并且创建了模式。我尝试删除唯一约束并重新运行 initializedb.py 命令,但约束不会删除,我收到此错误。
sqlalchemy.exc.IntegrityError: (IntegrityError) column name is not unique u'INSERT INTO students (id,name) VALUES (?, ?)' (200,'Hailey')
如何drop/modify这个约束?
Pyramid initialize_*_db
脚本调用 MetaData.create_all
,这是一个非常愚蠢的函数,因为它对任何具有相同名称的 table(如果存在)都很满意。不幸的是,这意味着您需要手动删除唯一约束,或者删除整个数据库并重新创建。
对于任何严肃的项目,我建议您使用 Alembic 来处理数据库架构迁移。
我在 Pyramid-SQLAlchemy 中创建了一个 class,我的 models.py 包含以下内容:
class Students(Base):
__tablename__ = 'students'
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
name = Column(String(50, convert_unicode=True), nullable=False, unique=True)
我不小心创建了 unique 约束和 运行 initializedb.py 命令,并且创建了模式。我尝试删除唯一约束并重新运行 initializedb.py 命令,但约束不会删除,我收到此错误。
sqlalchemy.exc.IntegrityError: (IntegrityError) column name is not unique u'INSERT INTO students (id,name) VALUES (?, ?)' (200,'Hailey')
如何drop/modify这个约束?
Pyramid initialize_*_db
脚本调用 MetaData.create_all
,这是一个非常愚蠢的函数,因为它对任何具有相同名称的 table(如果存在)都很满意。不幸的是,这意味着您需要手动删除唯一约束,或者删除整个数据库并重新创建。
对于任何严肃的项目,我建议您使用 Alembic 来处理数据库架构迁移。