Tout naturellement, je suis parti dans la ré-implémentation incrémentale d'un de mes projets PHP. Ce qui signifie commencer avec des modèles de données très simples, et les enrichir au fur et à mesure. Avec Django, la définition des modèles de données se fait par la rédaction de classes modèles, et la création des tables de la base se fait via un utilitaire en ligne de commande : python manage.py syncdb.

Or cette commande ne crée que les tables n'existant pas encore et ne met pas à jour la structure des tables existantes, ce qui fait que très vite on se retrouve avec des tables dont la structure ne correspond plus au modèle, et une erreur du type no such column. J'ai cru un instant que la commande python manage.py flush vidait la base et donc supprimait les tables, mais elle ne vide apparemment que les données et conserve la structure des tables existantes.

SQLite Manager (extenson firefox)C'est là qu'une fois de plus, Firefox m'a servi de couteau suisse du développement. En cherchant un utilitaire pour inspecter le contenu de la base Sqlite, je suis tombé SQLite Manager, une extension permettant d'administrer entièrement une base Sqlite ! Du coup, ça m'a permis de supprimer la table associée à chaque fois que je modifiais un modèle, et la recréer ensuite via syncdb.

Pour ce qui est de Django, je ne suis pas déçu. Cela faisait longtemps que je le surveillais du coin de l'oeil, et même un peu plus puisque j'ai réalisé une implémentation partielle de son moteur de templates en PHP (actuellement incluse dans webappkit, mon système de paquetages pour applis web PHP). En pratique, c'est encore mieux qu'attendu et la qualité et la richesse de la documentation y est pour quelque chose. Ainsi bien sûr que les qualités du language Python, qui a pas mal d'avance sur PHP a la fois en fonctionnalités et en cohérence.

Quelques liens supplémentaires :