我正在为我们的项目设置Alembic,这已经很大了,并且有很多桌子。事实是,我们的项目的数据库已经通过SQL进行了很长时间的管理,并且我们的炼金术模型几乎都是这样反映的(我掩盖了名称,但其余的都直接来自我们的代码) :
class SomeModel(Base, BaseModelMixin):
"""
Model docstring
"""
"""Reflect Table"""
__table__ = Table('some_models', metadata, autoload=True)
发生的事情是,当我创建自动迁移时,出于某种原因会创建很多放置表(和创建表)操作。我以为是因为模型类没有显式定义表,但是我不明白为什么这也会删除表。
在确保在target_metadata
中设置env.py
变量之前,我确保已处理所有模型定义:
# this imports every model in our app
from shiphero_app.utils.sql_dependencies import import_dependencies
import_dependencies()
from shiphero_app.core.database import Base
target_metadata = Base.metadata
关于我在这里可能会缺少什么的任何想法?
答案 0 :(得分:0)
这可能是您要寻找的-这使Alembic忽略预定义的表: https://alembic.sqlalchemy.org/en/latest/cookbook.html#don-t-generate-any-drop-table-directives-with-autogenerate
不幸的是,这也阻止了Alembic删除作用域内的表