2017-09-17 1 views
0

Ich kann nicht herausfinden, was hier falsch läuft.Verbindung mit Cloud SQL Postgres von App-Engine mit nur pyscopg2

Ich habe eine Python/Flask Web App mit reinem psycopg2 entwickelt. zunächst eine lokale Instanz von Postgres verwenden, dann beginne ich eine Postgres Cloud SQL auf Google und damit verbunden mit

conn = psycopg2.connect(database="********", user = "********", password = "**********", host = "104.***.***.**", port = "5432") 

Jetzt muß ich die App bereitstellen, sondern von dem, was ich aus der Dokumentation zu verstehen, kann ich nicht einfach Benutze die IP. Das Dokumentationsbeispiel basiert jedoch auf SQLAlchamy, das ich noch nie benutzt habe und möchte meine App nicht neu schreiben.

Soweit ich weiß, lädt Cloud SQL die Instanz in einem Proxy basierend auf dem Eintrag in app.yaml, der die Instanz angibt. es tut so in a. Unix-Buchse. so habe ich versucht,

conn = psycopg2.connect(database="********", user = "********", password = "**********", host = "/cloudsql/[my instance name here]") 

Ich versuchte, die Cloud-Konsole, und verwendet, um die Entwicklung Proxy dort auf einen Sockel Unix geladen und in der Vorschau die App und es schien ganz gut zu arbeiten. aber als ich diese Arbeitsversion bereitgestellt habe. Es würde immer noch keine Verbindung zur Datenbank herstellen.

Also, was bin ich hier falsch tun

Antwort

0

ich war in der Lage, das Problem zu verstehen. Es war für einen Amateur wie mich sowieso ein Lernprozess. Meine Annahme war richtig. Cloud SQL lädt die Instanz in einem Proxy basierend auf dem Eintrag in app.yaml, der die Instanz angibt. Es tut so in einem Unix-Socket (für Amateure wie mich, das ist ein Pfad zu einem Ordner nicht eine IP). so sollte die Verbindungszeichenfolge so aussehen

conn = psycopg2.connect(database="********", user = "********", password = "**********", host = "/cloudsql/my instance name here") 

Hinweis das Fehlen Einstellung Port als dass nur psycopg2 verwirren würde und die zugrunde liegende Postgres Bibliothek.

Der Grund, warum dies vorher nicht funktionierte, war, dass die Cloud SQL API nicht aktiviert war. Als ich die Dokumentation zuerst gelesen habe, dachte ich, dass das nur bedeuten würde, die Cloud SQL-Datenbank in Ihrem Projekt einzurichten, was ich bereits getan habe. Ich habe mich geirrt, es war ein separater Schritt und besteht im Wesentlichen darin, im API-Bereich Ihres Projekts auf "Aktivieren" zu klicken. Sobald das aktiviert wurde. Alles hat gut funktioniert.

Verwandte Themen