Quelqu'un peut-il m'aider à obtenir la grande image lorsqu'il s'agit de configurer des modèles SQLAlchemy, donc l'intégrité référentielle est assurée à tous les niveaux? Partant de l'idée que l'intégrité référentielle devrait être exprimée et appliquée par la DB, j'ai créé un schéma (actuellement dans Postgresql) avec toutes les contraintes dont je pense avoir besoin, me donnant ainsi une base de données qui fera confiance à l'intégrité référentielle .Intégrité référentielle - comment configurer SQLAlchemy?
Je commence alors à construire une application au-dessus de cette base de données, en utilisant SQLAlchemy (0.7) en mode déclaratif.
Après avoir cherché et lu un peu, je l'ai appris que je peux configurer:
- OnUpdate/règles onDelete sur ma colonne() définitions.
- options en cascade sur mes définitions relation(),
et que celles-ci semblent fonctionner au niveau de la session dans SQLAlchemy. - options passive_deletes et passive_updates pour mes définitions relationship().
Et que toutes ces options ont des valeurs par défaut.
Mais je suis confus quant à ce que j'ai réellement besoin de faire avec mes modèles SQLAlchemy, pour m'assurer que SQLAlchemy ne soit pas désynchronisé avec la base de données et ses contraintes pendant une session.
Que dois-je faire si je configure 'onupdate' etc. sur mes définitions Columns() dans SQLAlchemy?
Et pour les règles cascade et passive_delete/passive_update je peux configurer sur une relation(). De quoi ai-je besoin ici, et pourquoi?
Ou de reformuler ma question: Dans quelle mesure SQLAlchemy sera-t-il conscient des contraintes configurées dans le schéma DB, et dans quelle mesure (et comment) dois-je les répéter dans mes modèles?
Et est le autre chose que je devrais être au courant de? :)
Salut zzzeek, Merci d'essayer de lever une partie du brouillard dans ma tête. Et pour SQLAlchemy lui-même! :) J'ai ajouté une "réponse" à ma propre question, où j'essaie de résumer ce que je pense avoir appris. Espérons que je suis sur la bonne voie ... – herira