2009-08-19 7 views
0

J'ai travaillé sur un site Web en utilisant mod_python, python, et SQL Alchemy quand j'ai rencontré un problème étrange: Quand j'interroge la base de données pour tous les enregistrements, il renvoie le jeu de résultats correct; Cependant, lorsque j'actualise la page, elle me renvoie un jeu de résultats avec le même jeu de résultats ajouté. Je reçois plus de jeux de résultats "empilés" les uns sur les autres pendant que je rafraîchis la page.problème mod_python?

Par exemple:

Première chargement de la page: 10 résultats

charge deuxième page: 20 résultats (deux de chaque)

charge troisième page: 30 résultats (trois chacun)

etc ...

Est-ce un peu u problème nderlying avec mod_python? Je ne me souviens pas de l'avoir rencontré lors de l'utilisation de mod_wsgi.

+0

Pouvez-vous donner des extraits de code? Pourrait aider. – balpha

Répondre

0

Pas que j'en ai jamais entendu parler, mais il est impossible de le dire sans un code à regarder.

Peut-être avez-vous initialisé votre liste de jeux de résultats en tant que membre global ou partagé, puis ajouté des résultats lorsque l'application a été appelée sans la réinitialiser pour la vider? Une manière classique de réutiliser accidentellement des listes est d'en mettre une dans une valeur d'argument par défaut pour une fonction.

(La même chose pourrait se produire dans mod_wsgi bien sûr.)

+0

C'est un bon conseil, je définissais la liste des résultats de mon modèle à vide après la requête, mais je vais revérifier ceci et m'assurer que ce n'est pas le cas. –

+0

Le problème était d'avoir la requête à l'intérieur du constructeur de l'objet, en le déplaçant simplement et en stockant les résultats dans une variable locale dans la méthode a résolu le problème. Merci pour l'aide! –

0

Je ne sais pas l'une des technologies que vous utilisez. Cependant, avant de penser que cela pourrait être un bug dans les paquets que vous utilisez, vous devez considérer une chose.

Occam's razor.

Fondamentalement, « quand vous avez deux théories concurrentes qui font exactement les mêmes prédictions, le plus simple est le mieux. » Vos deux principales théories possibles ici sont qu'il y a un bug dans les composants que vous utilisez (que beaucoup d'autres utilisent) ou qu'il y a un bug dans votre code. Les chances sont (et je suis désolé) il y a un bug dans votre code. J'utilise cette idée avec mon propre code et chaque fois qu'il y avait un problème, il s'est avéré être mon code.

Espérons que d'autres peuvent vous diriger vers le bogue et que vous pourriez vouloir afficher le code du problème. Vous ne pouvez pas effacer un ensemble de résultats ou quelque chose - une variable - est maintenu plus longtemps que prévu.

+0

Defiantly était un bug dans mon code :) –

+0

Je suis content que vous l'ayez résolu. :-) –

Questions connexes