如何从Alembic中的上一版本创建自动生成的文件

时间:2015-05-07 15:23:37

标签: python flask flask-sqlalchemy alembic sqlalchemy-migrate

我正在关注this教程.. 初始自动生成是完美的..它基本上创建了迁移文件,升级和降级方法就好了。

所以让我们说这是迁移文件的修订号:3e96cf22770b ..我的所有升级语句都是这样的:

def upgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.create_table('hashtag',
                    sa.Column('id', sa.VARCHAR(), autoincrement=False, nullable=False),
                    sa.Column('text', sa.VARCHAR(), autoincrement=False, nullable=True),
                    sa.PrimaryKeyConstraint('id', name=u'hashtag_pkey')
                    )

我的降级声明如下:

def downgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.drop_table('user_access_token')

现在我对models.py文件做了一个简单的修改,这就是它在git上的样子:

-    verificationCode = Column(String())
+    isVerified = Column(Boolean())

问题是,我不知道如何运行一个autogenerate语句,实际上只是给我一个 delta 迁移文件..即我只想要一个迁移文件,将一列替换为另一列。

我尝试将当前版本设置为3e96cf22770b然后运行

python migrate.py db revision --autogenerate

但是它继续创建初始迁移文件的副本(即迁移整个数据库模式)而不仅仅是delta ...想法?

2 个答案:

答案 0 :(得分:0)

您应该可以运行:

python migrate.py db migrate

这应该为您创建一个新的迁移文件。一旦你得到它,你就可以运行:

python migrate.py db upgrade 

这将升级您的数据库。 在升级数据库之前,请查看迁移文件,看看它是否正在执行您想要执行的操作。

答案 1 :(得分:0)

Alembic通过观察当前数据库模式(它实际上连接数据库并获取模式)和新模型(在python代码中)自动生成迁移脚本(使用--autogenerate标志)。因此,当您要创建新的迁移脚本时,请确保您的数据库位于先前的架构(在您的情况下为3e96cf22770b)。

不确定如何尝试设置当前模式,但是可以在数据库的alembic_version表中检查模式。