Korrekte Methode zum Initialisieren einer Datenbanktabelle mit web2py DAL.define_table ()

8

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 :

%Vor%

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

Lösung

Basierend auf der Antwort von Interrobang lautet die korrekte Schreibweise:

%Vor%

Jetzt db.blog und db.code bleiben eine konstante Größe.

Zusammenfassung

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.

    
Mike Pennington 28.12.2011, 00:18
quelle

1 Antwort

5

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: Ссылка

    
Interrobang 28.12.2011, 00:42
quelle

Tags und Links