Ich migriere von SQLite zu MySQL und muss Indizes für Spalten in meiner Datenbank erstellen. Ärgerlicherweise verfügt mySQL nicht über die Funktion CREATE INDEX IF NOT EXISTS. Also habe ich mich gefragt, ob ich einfach einen neuen Index erstellen könnte, wenn die Tabelle selbst von web2py erstellt wird und nicht zu einem anderen Zeitpunkt. Aber wo im Code stelle ich eine Routine, die nur aufgerufen wird, wenn web2py 'create table' aufruft?Web2py: wie man einen Anruf eine Funktion bei der Tabellenerstellung anruft
Antwort
Die web2py-API enthält keine Möglichkeit festzustellen, ob eine bestimmte Tabelle gerade als Teil der aktuellen Anforderung erstellt wurde (wenn Migrationen aktiviert sind, wird die Tabelle bei der ersten Anforderung erstellt und andernfalls wird sie angenommen Die Tabelle existiert bereits). Wenn eine Tabelle in der Datenbank über den web2py-Migrationsmechanismus erstellt wird, wird eine * .table-Datei im Ordner/data der Anwendung erstellt. Um festzustellen, ob eine Tabelle nur erstellt wurde, müssten Sie feststellen, dass keine * .table-Datei existiert, bevor db.define_table
aufgerufen wird, und dass die * .table-Datei gleich danach existiert. Wahrscheinlich möchten Sie dies nicht bei jeder Anfrage tun, daher sollten Sie die Indexerstellung einfach außerhalb der Anwendung durchführen.
Ein besserer Ansatz wäre wahrscheinlich, das SQL manuell zu generieren, um zu überprüfen, ob der Index existiert, aber das wiederum sollte bei jeder Anfrage in der Produktion vermieden werden.
Hinweis, es gibt Diskussionen über das Hinzufügen von Indexerstellungsfunktionen zum DAL, aber es ist noch nicht da.
- 1. JavaScript, wie man eine Funktion anruft
- 2. J2ME: Wie man anruft?
- 3. Tornado - wie man einen Handler in einer anderen Funktion anruft
- 4. Wie man eine Funktion ohne Rückkehr in Swift anruft?
- 5. Datei-Upload bei web2py
- 6. Wie man einen archivierten Namen in SSRS dynamisch anruft
- 7. wann man editor.apply anruft?
- 8. wie man einen Dienst anruft, ohne var app zu benutzen?
- 9. Wie man NumberPickers onvaluechange von SharedPreferences anruft?
- 10. Wie man einen python socket.accept() Anruf stoppt?
- 11. Anruf Komponente Funktion bei der Initialisierung in Knockout
- 12. wie man einen spezifischen Controller anruft, der für 2 Präfixrouten in Laravel 5
- 13. Wie konvertiert man einen asynchronen Anruf in eine Synchronisierung?
- 14. Wie vermeidet man mehrere Service-Objekte bei der Verwendung eines JSON-Dienstes in einem web2py-Modul?
- 15. JavaScript-Funktion Anruf bei der Eingabe-Taste klicken
- 16. Wie man einen Anruf von adb annimmt
- 17. Wie man einen Anruf programmgesteuert beantwortet
- 18. Wie man einen ausgehenden Anruf blockiert?
- 19. Anruf Funktion in einer anderen Funktion Anruf
- 20. Wie benutzt man globale Variable in web2py?
- 21. Wie man Rechnung in web2py erzeugt/druckt?
- 22. Wie man iPod-Bibliothek in einer Benutzeranwendung anruft
- 23. Wie man Fragment von einer Klasse in Android anruft?
- 24. appharbor JustOneDB - "Fehler": "Tabellenerstellung benötigt einen Tabellennamen
- 25. Wie verzögert man den Ajax-Anruf bei Tastendruck?
- 26. Schaltfläche, die in swift 2 anruft?
- 27. Wie übergebe ich einen Parameter an eine Funktion, bei der die Funktion selbst ein Parameter ist?
- 28. Wie man PHP api von C# anruft (einfaches Beispiel)
- 29. Wie man Unix-Befehl von anderen Verzeichnissen korrekt anruft
- 30. Erstellen einer universellen Controller-Funktion mit Web2Py