3

我有一个在 django 和烧瓶之间共享的数据库。

在烧瓶应用程序中,我使用 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 的表?

4

2 回答 2

1

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

有关详细信息,请参见此处:Alembic API

于 2013-08-02T11:25:41.517 回答
1

我自己解决了这个问题:

在 env 文件中,函数:

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

把你的桌子放在这里。这用引擎定义表存在并且不删除它们。

于 2013-08-05T03:58:14.247 回答