Alembic自动生成空迁移文件



我正在尝试将alembic库连接到数据库和sqlalchemy库。作为指南,我使用这个例子链接

我的项目文件:

db.py

from databases import Database
from sqlalchemy import MetaData, create_engine
DATABASE_URL = "postgresql://....@localhost:5432/db"
engine = create_engine(DATABASE_URL)
metadata = MetaData()
database = Database(DATABASE_URL)

型号.py

from sqlalchemy import Table, Column, Integer, String, DateTime
from sqlalchemy.sql import func
from db import metadata
notes = Table(
"notes",
metadata,
Column("id", Integer, primary_key=True),
Column("title", String(50)),
Column("description", String(50)),
Column("created_date", DateTime, default=func.now(), nullable=False),
)

env.py(alembic设置(

from db import DATABASE_URL, metadata
....
#add new
target_metadata = metadata
...
#change
def run_migrations_online():
config.set_main_option('sqlalchemy.url', str(DATABASE_URL))
connectable = engine_from_config(
config.get_section(config.config_ini_section),
prefix="sqlalchemy.",
poolclass=pool.NullPool,
)

当我运行时

alembic revision --autogenerate -m 'Add notest table'

迁移/版本时的新文件该上下文被创建为

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

我想这可能与target_metadata=metadata变量的使用有关。这似乎都是按照说明进行的,但迁移并没有按预期进行。

如果有人有类似的问题。您所要做的就是将models.py中的表导入到metadata对象之前的env.py文件中。

env.py

...
from models.notes import notes
from db import DATABASE_URL, metadata
...

最新更新