È un po' complicato, ma ecco cosa ha funzionato per me. Ti aiuterò a configurare Quickstart App Engine con psycopg2 e dopo ti farai un'idea.
Utilizza Avvio rapido per Python nell'ambiente flessibile di App Engine documentazione per configurare e distribuire la tua app.
Utilizza Connessione da App Engine documentazione per connetterti alla tua app App Engine a Cloud SQL Postgre SQL.
Ho apportato piccole modifiche per farlo funzionare:
In app.yaml
aggiungi:
beta_settings:
cloud_sql_instances: [INSTANCE_CONNECTION_NAME]=tcp:5432
#[INSTANCE_CONNECTION_NAME] = [PROJECT_NAME]:[INSTANCE_ZONE]:[INSTANCE_NAME]
#[INSTANCE_CONNECTION_NAME] can be found at Google Cloud Console Cloud SQL's instance page, under "Instance connection name".
In requirements.txt
aggiungi:
psycopg2
psycopg2-binary
In main.py
aggiungi:
@app.route('/connect')
def connect():
try:
#host='172.17.0.1' is the defult IP for the docker container that it is being created during the deployment of the App Engine
conn = psycopg2.connect("dbname='postgres' user='postgres' host='172.17.0.1' password='test'")
return "Connection was established!"
except:
return "I am unable to connect to the database"
Usa il gcloud app deploy
comando per distribuire la tua app.
Dopo la distribuzione, utilizza gcloud app browse
comando per aprire l'app nel browser.
Quando si accede al link https://[PROJECT_ID].appspot.com/connect
Dovrebbe rispondere con Connection was established!