Ich versuche, die Tabellen db.blog
und db.code
mit genau den gleichen SQL-Definitionen dynamisch zu erstellen. Nachdem ich sie definiert habe, möchte ich sie mit 10 Zeilen zufälliger Daten füllen und diesen Initialisierungscode nie wieder ausführen.
Mein Problem ist, dass der Initialisierungscode jedes Mal ausgeführt wird, wenn ich auf "Aktualisieren" im Browser klicke, während ich die newblog appadmin-Schnittstelle für db.code
oder db.blog
anschaue: Zusammenfassung & gt; 0
Ich initialisiere db.blog
und db.code
in newblog/models/newblog.py
:
Irgendwie erlaubt if not db.get(tt, False):
mehrere Ausführungen der darunter liegenden Routine. Ich verstehe nicht warum ... Wenn die Tabelle bereits erstellt wurde, sollte not db.get(tt, False)
False
sein. Web2py überspringt jedoch niemals den Initialisierungscode, was bedeutet, dass db.blog
und db.code
bei jedem erneuten Laden um 10 Einträge anwachsen.
Frage: Warum verhindert if not db.get(tt, False):
nicht mehrere Ausführungen?
Ich betreibe web2py 1.99.4 unter Debian 6.0 / sqlite 3.7.3 / Cherokee 1.2.101 / uWSGI 0.9.9.3
Basierend auf der Antwort von Interrobang lautet die korrekte Schreibweise:
%Vor% Jetzt db.blog
und db.code
bleiben eine konstante Größe.
db.define_tables()
muss für jedes Seitenrendering aufgerufen werden; Mein Verständnis (dass es nur einmal ausgeführt werden musste, um die Tabellendefinition auf Platte zu schreiben) war falsch.
Sie können eine Fixture-Datei hinzufügen, die grundsätzlich Standarddaten enthält, die beim Erstellen der Tabelle einmal eingefügt werden.
Ein Beispiel wird hier gegeben: Ссылка