我定义了流动模型。在
class JjfqServiceProvidorRecord(Base):
__tablename__ = 'jjfq_service_providor_record'
id = Column(Integer, primary_key=True)
phone = Column(String(16))
name = Column(String(20))
然后我运行alembic revision --autogenerate -m 'first'
,得到了流动的迁移文件:
然后,我删除name
字段,如下所示:
class JjfqServiceProvidorRecord(Base):
__tablename__ = 'jjfq_service_providor_record'
id = Column(Integer, primary_key=True)
phone = Column(String(16))
name = Column(String(20))
然后我重新运行alembic revision --autogenerate -m 'second'
,这个命令生成的迁移文件是:
def upgrade():
### commands auto generated by Alembic - please adjust! ###
pass
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
pass
### end Alembic commands ###
怎么了?为什么alembic没有检测到列的添加和删除?在
python : Python 2.7.5
alembic : latest verison
sqlalchemy: 1.0
framework : falcon
system : Debian GNU/Linux 7
首先,我将描述我的环境:
这是我在安装和初始化Alembic之后的目录结构:
^{pr2}$我已经在
app/models.py
中定义了模型:对于
alembic/env.py
,我有以下内容:之后,我运行了autogeneration命令:
第一个迁移文件应该如下所示:
如果您对第一个迁移文件的外观满意,请运行升级迁移:
之后,您可以从
app/models.py
中的表定义中删除jjfq_service_providor_record.name
列,并运行第二个自动生成:第二个迁移文件应该如下所示:
如果这看起来也不错,运行第二次迁移,您应该已经准备好了!在
如您所见,我第二次修订中的注释“second”是经过深思熟虑的,它帮助我更准确地列出删除
name
列的确切位置。我认为当你试图确定迁移历史时,它会让你更清楚。在希望能帮上忙!在
哦,我终于发现了问题。我的系统路径指向错误的目录,其中是我代码的旧版本。所以每次我运行
alembic revision autogenerate
,它都会从未修改的旧代码中读取。在相关问题 更多 >
编程相关推荐