Search code examples
postgresqlgoogle-app-engineflaskpsycopg2google-cloud-sql

Connecting to Google Cloud SQL Postgres instance using psycopg2


I am trying to connect to Google Cloud SQL Postgres Using psycopg2.

I have created an postgreSQL instance and using the default database postgres for now. I am able to connect from pgadmin tool as well as from the gcloud shell and the queries give expected result.

I have developed a flask application and deploying on standard app engine.

conn = psycopg2.connect(database="postgres", user = "postgres", password = "password", host = "/cloudsql/my-new-db")

And when I run it, the get psycopg2.OperationalError: could not connect to server: No such file or directory error.

I have a hunch that host value is not correct. I tried various options like /cloudsql/<prj-name>.<region>.<db-instance-name>

But, nothing seems to be working. What else should I be doing to remove this error?


Solution

  • As mentioned in this article on connecting to Cloud SQL from app engine:

    Connecting with Unix sockets

    Once correctly configured, you can connect your service to your Cloud SQL instance's Unix domain socket accessed on the environment's filesystem at the following path: /cloudsql/INSTANCE_CONNECTION_NAME.

    The INSTANCE_CONNECTION_NAME can be found on the Overview page for your instance in the Google Cloud Console or by running the following command:

        gcloud sql instances describe [INSTANCE_NAME]
    

    edit: formatting