Kann SQLAlchemy verwendet werden, die mit Google Cloud SQL?
Ist, habe ich mich über Google Cloud SQL ist die Dokumentation und verschiedene Recherchen, aber ich kann nicht herausfinden, ob es möglich ist, SQLAlchemy mit Google Cloud SQL, und wenn ja, was wird die Verbindungs-URI sein sollte.
Ich bin auf der Suche zu verwenden, das Flask-SQLAlchemy-Erweiterung und müssen Sie die Verbindungszeichenfolge wie folgt:
mysql://username:password@server/db
Sah ich die Django Beispiel, aber es scheint, dass die Konfiguration verwendet einen anderen Stil als die Verbindungszeichenfolge. https://developers.google.com/cloud-sql/docs/django
Google-Cloud-SQL-Dokumentation:
https://developers.google.com/cloud-sql/docs/developers_guide_python
InformationsquelleAutor der Frage Sean Lynch | 2012-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update
Google Cloud SQL unterstützt jetzt den direkten Zugriff, so dass die
MySQLdb
Dialekt kann jetzt verwendet werden. Die empfohlene Verbindung über den mysql-Dialekt ist mit der URL-format:mysql+gaerdbms
wurde als veraltet markiert in SQLAlchemy seit version 1.0Ich bin dabei die ursprüngliche Antwort unten im anderen Fall kann es immer noch hilfreich.
Für diejenigen, die besuchen, diese Frage später (und nicht wollen, zu Lesen, alle Kommentare), SQLAlchemy unterstützt jetzt Google-Cloud-SQL ab version 0.7.8 verwenden Sie die Verbindungszeichenfolge /Dialekt (siehe: docs):
E. g.:
Habe ich vorgeschlagen, eine update der
mysql+gaerdmbs://
Dialekt zu unterstützen, der Google Cloud SQL-APIs (rdbms_apiproxy
undrdbms_googleapi
) für die Verbindung zu Cloud-SQL aus einem nicht-Google-App-Engine-production-Instanz (ex. Ihre Entwicklungs-workstation). Die änderung wird auch ändern Sie die Verbindungszeichenfolge leicht, indem Sie die Projekt-und Instanz-als Teil der Zeichenkette, und nicht benötigen, weitergegeben werden separat überconnect_args
.E. g.
Dies wird auch machen es einfacher zu bedienen Cloud SQL mit Flask-SQLAlchemy oder andere Verlängerung, wo Sie nicht explizit als
create_engine()
nennen.Wenn Sie Probleme mit der Verbindung zu Google Cloud SQL von Ihrem Entwicklungs-workstation, möchten Sie vielleicht einen Blick auf meine Antwort hier - https://stackoverflow.com/a/14287158/191902.
InformationsquelleAutor der Antwort Sean Lynch
Ja,
Wenn Sie irgendwelche bugs finden, die in SA+Cloud SQL, lasst es mich bitte wissen. Ich schrieb das Mundart-code wurde integriert in SQLAlchemy. Es ist ein bisschen albern business darüber, wie Cloud SQL Blasen bis Ausnahmen, so könnte es einige lose enden gibt.
InformationsquelleAutor der Antwort Richie Foreman
es ist machbar, obwohl ich noch nicht verwendet Fläschchen an alle also ich bin mir nicht sicher über die Gründung der Verbindung durch. Ich habe es funktioniert durch die Pyramide und verfasst einen patch zu SQLAlchemy (möglicherweise das falsche repo) hier:
https://bitbucket.org/sqlalchemy/sqlalchemy/pull-request/2/added-a-dialect-for-google-app-engines
Inzwischen ersetzt und Akzeptanz in SQLAlchemy als
http://www.sqlalchemy.org/trac/ticket/2484
Ich glaube nicht, dass es gemacht es so zu eine release aber.
Gibt es einige Probleme mit Google SQL-werfen verschiedene Ausnahmen, so hatten wir Probleme mit dem Dinge wie die Bereitstellung einer Datenbank automatisch. Sie müssen auch deaktivieren Sie Verbindungspooling verwenden NullPool wie erwähnt in der zweiten patch.
Wir haben seit verschoben, um mit dem datenspeicher durch NDB so habe ich nicht gefolgt, das vorwärtskommen der diese Updates für eine Weile..
InformationsquelleAutor der Antwort lecstor
Für diejenigen, die lieber PyMySQL über MySQLdb (die vorgeschlagen, die akzeptierte Antwort), die SQLAlchemy-Verbindungszeichenfolgen sind:
Für Die Produktion
mysql+pymysql://<USER>:<PASSWORD>@/<DATABASE_NAME>?unix_socket=/cloudsql/<PUT-SQL-INSTANCE-CONNECTION-NAME-HERE>
Bitte stellen Sie sicher, dass
Fügen Sie die SQL-Instanz, um Ihre
app.yaml
:Aktivieren Sie die SQL-Admin-API -wie es scheint nötig zu sein:
https://console.developers.google.com/apis/api/sqladmin.googleapis.com/overview
Für Die Lokale Entwicklung
mysql+pymysql://<USER>:<PASSWORD>@localhost:3306/<DATABASE_NAME>
gegeben, dass man begonnen, den Cloud-SQL-Proxy mit:
cloud_sql_proxy -instances=<PUT-SQL-INSTANCE-CONNECTION-NAME-HERE>=tcp:3306
InformationsquelleAutor der Antwort Lars Blumberg