Python Alembic——自动迁移生成一个空提交
正在尝试自动生成初始Alembic文件 我有一个flask应用程序,我需要设置Alembic来跟踪数据库。 我使用当前模式生成了一个新的Python Alembic——自动迁移生成一个空提交,python,sqlalchemy,alembic,Python,Sqlalchemy,Alembic,正在尝试自动生成初始Alembic文件 我有一个flask应用程序,我需要设置Alembic来跟踪数据库。 我使用当前模式生成了一个新的dbmodels.py文件 sqlacodegen postgresql://scott:tiger@localhost/mydatabase 我试着跑步: alembic--autogenerate-m“first” 但生成的文件为空: def upgrade(): # ### commands auto generated by Alembic -
dbmodels.py
文件
sqlacodegen postgresql://scott:tiger@localhost/mydatabase
我试着跑步:
alembic--autogenerate-m“first”
但生成的文件为空:
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 ###
我的env.py如下所示:
import os, sys
sys.path.append(os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(''))), 'App'))
from
target_metadata = dbmodels.Base.metadata
我尝试在空闲状态下检查目标_元数据:
from manager import dbmodels
from manager.dbmodels import Base
x = Base.metadata
x
MetaData(bind=None)
如果数据库和模型定义之间没有差异,alembic将生成一个空迁移文件。如果要跟踪模型定义中的更改,
alembic init
首先对模型进行更改,然后再执行alembic修订版--autogenerate
。但它不需要“记录”数据库中已有的表和列吗?那么alembic是否只检测数据库中的更改而不检测模型脚本?alembic的要点是将对模型定义所做的更改应用于数据库,而不是反过来。如果我理解得很好,为了回答您的问题,alembic通过创建一个alembic_version
表来实现。如果希望使用alembic脚本创建所有表,请对空数据库运行generate
。