Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Alembic——自动迁移生成一个空提交_Python_Sqlalchemy_Alembic - Fatal编程技术网

Python 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 -

正在尝试自动生成初始Alembic文件

我有一个flask应用程序,我需要设置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