2011-08-02 9 views
0

J'ai eu une idée et avant de l'implémenter je voudrais la lancer pour avoir un retour ou même découvrir que quelqu'un l'a déjà fait.Utilisation du test Django pour analyser et réparer les données d'une base de données

Voici la chose: J'ai un site Web qui fonctionne avec une base de données qui se développe assez rapidement et au fil des mois, et sur les nombreux problèmes qui ont eu lieu, s'est rempli d'une bonne quantité de déchets. Je pensais mettre en place des scripts pour parcourir la base de données et nettoyer le désordre. Donc, mon idée était d'utiliser Django Tests, d'une manière que l'on écrirait une grande quantité de petits tests simples qui feraient exactement cela, sauf qu'au lieu de lever un drapeau, cela réparerait les choses.

Qu'en pensez-vous? Je ne peux pas penser pour une raison quelconque pourquoi cela ne fonctionnerait pas. Mais je ne suis pas si chevronné dans Django. Serait-ce difficile? Un problème prévisible?

Merci!

Répondre

3

Non, c'est une mauvaise idée pour de nombreuses raisons, depuis la conception jusqu'à la mise en œuvre. Pour n'en citer que quelques-uns:

  1. Les tests ne fonctionnent pas sur la base de données actuelle. Une base de données séparée est créée à partir de zéro pour cela. Tu devrais pirater ça.
  2. Normalement chaque cas de test qui touche la base de données s'exécute dans une transaction, puis il est annulé. Donc, à la fin, la DB n'a pas changé du tout. Vous pouvez également éviter cela, mais ce n'est pas le but.
  3. Les tests sont supposés être exécutés tout le temps lorsque vous modifiez quelque chose. Mais le genre de problèmes dont vous parlez devrait être être correctif unique (la plupart du temps).

Mais il y a une solution très simple et appropriée pour ce que vous voulez faire:

  1. Installer South
  2. bug Fix qui provoque des données incorrectes/indésirables.
  3. Ecrivez data migration qui corrige/nettoie les données "cassées" déjà existantes.
  4. Mettre à jour et migrer.
  5. Répéter 2-5

Maintenant, ceci est pour fixe une fois seulement, mais dans la plupart des cas, cela est la bonne façon de le faire. Vous corrigez le bug qui provoque le problème de données, ainsi que la correction des données. Si vous avez vraiment besoin de la même fonctionnalité de modification de données pour exécuter plus d'une fois (périodiquement), vous pouvez créer un custom management command (ou simplement un simple script python exécutable) et le planifier pour qu'il s'exécute à partir de cron.

Questions connexes