0

我正在关注教程..初始自动生成非常完美..它基本上可以使用升级和降级方法创建迁移文件。

所以假设这是迁移文件的修订号: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())

问题是,我不知道如何运行实际上只是给我一个增量迁移文件的自动生成语句..即我只想要一个用另一列替换一列的迁移文件..

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

python migrate.py db revision --autogenerate

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

4

2 回答 2

1

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

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

于 2018-06-20T19:09:18.747 回答
0

您应该能够运行:

python migrate.py db migrate

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

python migrate.py db upgrade 

这将升级您的数据库。在升级数据库之前,请查看迁移文件,看看它是否正在做你想做的事情。

于 2015-05-08T08:03:47.840 回答