2011-02-12 7 views
2

Quand exactement la transaction de base de données est en cours? Est-ce par exemple à la fin de chaque génération de réponse?transactions Web2py et DB

Pour expliquer la question: J'ai besoin de développer une application un peu plus sophistiquée où je dois contrôler manuellement ou plus les transactions DB. Spécialement je dois être capable de concevoir un ensemble de formes avec des logiques complexes derrière les formes (une sorte de 'magicien') mais les opérations de base de données ne doivent pas être validées jusqu'à la dernière forme et la confirmation.

Bien sûr, je pourrais tout mettre à la session sans faire de changement de DB, mais ce n'est pas une solution, les changements sont assez complexes et doivent vraiment être effectués. Donc, le seul moyen est de le garder non engagé.

Maintenant, revenons à la question: si je comprends comment ça marche dans web2py, il sera plus facile pour moi de décider si c'est un bon cadre pour moi. Je suis un programmeur java et php, je connais python mais je ne connais pas encore web2py ...

Si vous connaissez une page web quand elle est expliquée, je l'apprécie aussi.

THanks!

+0

Je vous recommande de le demander sur la [liste de diffusion web2py] (https://groups.google.com/forum/?fromgroups#!forum/web2py) - vous obtiendrez plus d'aide plus rapidement. – Anthony

+0

Merci, je vais essayer – jag

Répondre

0

Avez-vous vérifié la documentation officielle? Il explique plutôt commit policies et distributed transactions.

+0

Merci, je l'ai lu mais soit il me manque quelque chose ou c'est exactement le contraire dont j'ai besoin. Je veux dire - la documentation dit que tout est engagé quand une action est faite (vue, contrôleur etc) - et il est dit que je peux commettre plus souvent. – jag

+0

Mais ma question est: comment éviter la validation automatique? – jag

1

Vous pouvez appeler db.commit() et db.rollback() à peu près partout. Si vous ne le faites pas et que l'action ne déclenche pas d'exception, elle le commet avant de renvoyer une réponse au client. Si elle déclenche une exception et qu'elle n'est pas explicitement interceptée, elle est restaurée.