我正在关注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 ...想法?
答案 0 :(得分:0)
您应该可以运行:
python migrate.py db migrate
这应该为您创建一个新的迁移文件。一旦你得到它,你就可以运行:
python migrate.py db upgrade
这将升级您的数据库。 在升级数据库之前,请查看迁移文件,看看它是否正在执行您想要执行的操作。
答案 1 :(得分:0)
Alembic通过观察当前数据库模式(它实际上连接数据库并获取模式)和新模型(在python代码中)自动生成迁移脚本(使用--autogenerate
标志)。因此,当您要创建新的迁移脚本时,请确保您的数据库位于先前的架构(在您的情况下为3e96cf22770b
)。
不确定如何尝试设置当前模式,但是可以在数据库的alembic_version
表中检查模式。