Was ist ein guter Ansatz zum Verwalten der Datenbankverbindung in einer Google Cloud SQL (GAE) -Python-App?

Ich lerne gerade Google App Engine und versuche, einen guten Ansatz für die Verwaltung meiner Datenbankverbindung zu einer Google Cloud SQL-Instanz zu finden (wenn Sie GC-SQL nicht verwendet haben, handelt es sich im Grunde genommen um MySQL in der Cloud, mit einigen wenigen Einschränkungen).

Ich verwende die GAE-Umgebung von Python (2.7) mit dem Framework webapp2 für die Bearbeitung von Anforderungen. Ich weiß, dass in den FAQ empfohlen wird, bei jeder Anforderung eine neue Verbindung zur Datenbank herzustellen, aber ich weiß nicht, wie die Verbindung empfohlen wird. Jedes Mal, wenn ich versuche, Tabellen während der Entwicklung zu löschen, hängt GC-SQL und "show processlist" zeigt an, dass eine Reihe von Prozessen vorhanden sind (wahrscheinlich, weil ich die Datenbank nicht schließe) und einer von ihnen auf eine Sperre wartet ( wahrscheinlich der Prozess, der versucht, die Tabellen zu löschen). Das ist ärgerlich und zwingt mich, die GC-SQL-Instanz neu zu starten (wie etwa den Neustart des mysql-server-Dienstes, wie ich es mir vorstelle). Es gibt auch gelegentliche DB-Probleme, die meines Erachtens damit zusammenhängen, dass ich meine DB-Verbindung nicht wirklich schließe.

Soll ich beispielsweise einen Destruktor in meiner webapp2.Requesthandler-Unterklasseninstanz haben, um die Verbindung zur Datenbank zu trennen? GAE-Objekte scheinen manchmal zwischengespeichert zu sein, daher ist dies auch zu berücksichtigen. Ich nehme an, ich könnte nur für jede Abfrage eine Verbindung herstellen / abfragen / trennen, aber dies scheint suboptimal zu sein.

Ich weiß, dass dies eine vage Frage ist, aber ich hoffe, dass jemand, der in diesem Bereich gespielt hat, mir einige Tipps geben kann.

Danke im Voraus!

Aktualisieren: Ich habe versucht, einen Wrapper um Methoden zu implementieren, die ein Cursot benötigen, wobei ich Shays Antwort als Ausgangspunkt genommen habe. Ich erhalte GAE-Fehler. Hier ist eine neue spezielle Frage:Was sind die Verbindungslimits für Google Cloud SQL von App Engine und wie werden DB-Verbindungen am besten wiederverwendet?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage