2009-08-19 10 views
0

Ich habe auf einer Website mit mod_python, Python und SQL Alchemy gearbeitet, als ich auf ein seltsames Problem stieß: Wenn ich die Datenbank nach allen Datensätzen abfrage, gibt es die korrekte Ergebnismenge zurück; Wenn ich jedoch die Seite aktualisiere, gibt sie mir eine Ergebnismenge zurück, an die dieselbe Ergebnismenge angehängt ist. Ich erhalte mehr Ergebnissätze, die übereinander gestapelt sind, während ich die Seite mehr aktualisiere.mod_python Problem?

Zum Beispiel:

Erste Seite Last: 10 Ergebnisse

Zweite Seite Last: 20 (jeweils zwei)

Dritter Seite Last: 30 (jeweils drei)

etc ...

Ist das eine u nderly Problem mit mod_python? Ich erinnere mich nicht daran, bei der Verwendung von mod_wsgi darauf zu stoßen.

+0

Können Sie Code-Snippets eingeben? Könnte helfen. – balpha

Antwort

0

Nicht, dass ich jemals davon gehört habe, aber es ist unmöglich zu sagen, ohne etwas Code zu betrachten.

Vielleicht haben Sie Ihre Ergebnislistenliste als globales oder freigegebenes Mitglied initialisiert und dann Ergebnisse angehängt, als die Anwendung aufgerufen wurde, ohne sie auf leer zurückzusetzen? Eine klassische Möglichkeit, Listen versehentlich zu verwenden, besteht darin, einen Wert als Standard-Argument für eine Funktion anzugeben.

+0

Das ist ein guter Tipp, ich habe die "Ergebnis" -Liste meines Modells nach der Abfrage auf "leer" gesetzt, aber ich werde das nochmal überprüfen und sicherstellen, dass dies nicht der Fall ist. –

+0

Das Problem bestand darin, die Abfrage innerhalb des Konstruktors des Objekts zu haben, indem man sie einfach herauszog und die Ergebnisse in einer lokalen Variablen innerhalb der Methode speicherte, um das Problem zu lösen. Danke für die Hilfe! –

0

Ich weiß nicht, über eine der Technologien, die Sie verwenden (Das gleiche in mod_wsgi natürlich. Passieren könnte). Bevor Sie jedoch denken, dass das ein möglicher Fehler in den Paketen sein könnte, die Sie verwenden, müssen Sie eine Sache in Betracht ziehen.

Occam's razor.

Im Grunde „wenn Sie zwei konkurrierenden Theorien, die genau die gleichen Vorhersagen zu machen, desto einfacher ist, desto besser.“

Ihre zwei möglichen Haupttheorien hier ist, dass es einen Fehler in den Komponenten gibt, die Sie verwenden (die viele andere verwenden), oder ein Fehler in Ihrem Code ist. Die Chancen stehen gut (und es tut mir leid), dass es einen Fehler in Ihrem Code gibt.

Ich benutze diese Idee mit meinem eigenen Code und jedes Mal, wenn es ein Problem gab, entpuppte es sich als mein Code.

Hoffentlich können andere Sie zu dem Fehler führen, und Sie möchten möglicherweise den Problemcode veröffentlichen. Möglicherweise löschen Sie nicht eine Ergebnismenge oder etwas - eine Variable - wird länger gehalten als erwartet.

+0

Trotz war ein Fehler in meinem Code :) –

+0

Ich bin froh, dass Sie es gelöst haben. :-) –

Verwandte Themen