3 votes

Alembic Django Flask migrer la base de données

J'ai une base de données partagée entre django et flask.

Dans l'application flask, j'utilise sqlAlchemy et j'utilise Alembic pour migrer la base de données. Mais quand je migre la base de données et utilise la commande :

$ alembic revision --autogenerate -m "some message"

Cela supprimera automatiquement toutes les tables que django avait créées :

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'

Comment configurer Alembic pour que la migration des bases de données ne supprime pas les tables de django ?

1voto

dbanck Points 250

Vous pouvez utiliser include_object du contexte de l'environnement. La fonction peut retourner True o False indiquant si le tableau/objet donné doit être pris en compte dans le balayage autogénéré.

Voir ici pour plus de détails : API d'alambic

1voto

web_dev Points 41

J'ai résolu ce problème par moi-même :

Dans le fichier env, la fonction :

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

Mettez vos tables ici. Ceci définit avec le moteur que les tables ont existé et ne les laisse pas tomber.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X