Alembic Django Flask迁移数据库

时间:2013-07-31 07:30:51

标签: django sqlalchemy flask migrate alembic

我在django和flask之间共享了一个数据库。

在flask app中,我使用sqlAlchemy并使用Alembic迁移数据库。 但是当我迁移数据库并使用命令时:

$ alembic revision --autogenerate -m“some message”

它将自动删除django创建的所有表:

INFO  [alembic.migration] Context impl MySQLImpl.
INFO  [alembic.migration] Will assume non-transactional DDL.
INFO  [alembic.autogenerate] Detected removed table u'django_content_type'
INFO  [alembic.autogenerate] Detected removed table u'auth_group'
INFO  [alembic.autogenerate] Detected removed table u'auth_user'
INFO  [alembic.autogenerate] Detected removed table u'auth_user_groups'
INFO  [alembic.autogenerate] Detected removed table u'django_session'
INFO  [alembic.autogenerate] Detected removed table u'auth_permission'
INFO  [alembic.autogenerate] Detected removed table u'auth_user_user_permissions'
INFO  [alembic.autogenerate] Detected removed table u'account_userprofile'
INFO  [alembic.autogenerate] Detected removed table u'south_migrationhistory'
INFO  [alembic.autogenerate] Detected removed table u'django_site'

如何配置Alembic以便数据库迁移不会删除django的表?

2 个答案:

答案 0 :(得分:1)

我自己解决了这个问题:

在env文件中,函数:

def run_migrations_online():
    target_metadata.reflect(engine, only=[ "django_content_type", "auth_group", ...])

把你的桌子放在这里。这通过引擎定义表存在并且不丢弃它们。

答案 1 :(得分:0)

您可以使用环境上下文中的include_object。该函数可以返回TrueFalse,指示是否应在自动生成扫描中考虑给定的表/对象

请点击此处了解详情:Alembic API