我有一个烧瓶炼金术模型:
class MyModel(db.Model):
__tablename__ = 'targets'
id = db.Column(db.Integer, primary_key=True)
url = db.Column(db.String(2048))
表已经创建,并且正在使用中。我想在url属性上创建一个索引,所以我将index=True传递给它:
url = db.Column(db.String(2048), index=True)
如何在不删除和重新创建表的情况下使此索引生效?
Tags:
给出了模型类的原始问题。
不能只添加
index=True
,因为即使调用了db.Model.metadata.create_all()
,也不会在已创建的表上创建索引。相反,您需要创建一个独立的
Index
对象,然后创建它。它看起来像这样:现在
engine
的来源取决于您的sqlalchemy配置,但是这段代码应该传达需要发生什么的要点。对索引调用
create()
:http://docs.sqlalchemy.org/en/latest/core/constraints.html#sqlalchemy.schema.Index.create
如果使用的是Alembic,则可以创建一个迁移来执行此操作,并完全避免将其添加到模型中:
相关问题 更多 >
编程相关推荐