2010-01-13 2 views
0

Après avoir appelé update(), je sais que la valeur de retour a un attribut .rowcount qui indique le nombre de lignes qui ont été modifiées. Existe-t-il un moyen d'obtenir les nouvelles valeurs réelles auxquelles elles ont été modifiées?Après avoir effectué une mise à jour SQLAlchemy(), existe-t-il un moyen d'obtenir les valeurs modifiées?

Par exemple, si je fais l'équivalent SQLAlchemy de:

UPDATE t SET x=x+1 WHERE y=z 

... est-il un moyen d'obtenir la nouvelle valeur de x? Ou dois-je faire un SELECT?

Répondre

2

Le ResultProxy a deux méthodes, last_updated_params() qui renvoie un dictionnaire de chaque valeur de paramètre de liaison envoyé avec l'exécution de l'instruction, ainsi qu'une collection postfetch_cols(), une liste de colonnes pour lesquelles une expression SQL en ligne a été intégré dans le UPDATE (pour que vous auriez à post-SELECT les valeurs). Ces collections sont uniquement remplies pour les exécutions à une seule instruction, pas pour les appels "executemany" qui transmettent plusieurs ensembles de paramètres.

+0

Pouvez-vous donner un exemple de l'expression SQL embarquée post-'SELECTION'? Je ne sais pas où j'ajouterais même cela sur mon objet 'update'. – dwanderson

Questions connexes