Conéctate a Cloud SQL para PostgreSQL con Python a través de un socket Unix

Establece una conexión de base de datos a una instancia de Cloud SQL para PostgreSQL con un socket Unix. Utiliza la biblioteca SQLAlchemy para crear un motor de conexión, configurado específicamente para el controlador pg8000. La secuencia de comandos recupera los parámetros de conexión necesarios, como el usuario de la base de datos, la contraseña, el nombre de la base de datos y la ruta de acceso del socket Unix, de las variables de entorno. Este enfoque es particularmente útil para las aplicaciones que se ejecutan en la misma región de Google Cloud que la instancia de Cloud SQL, ya que ofrece una forma segura y eficiente de comunicarse con la base de datos sin necesidad de configurar una lista de IPs permitidas para las conexiones TCP.

Explora más

Para obtener documentación en la que se incluye esta muestra de código, consulta lo siguiente:

Muestra de código

Python

Para autenticarte en Cloud SQL para PostgreSQL, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

import os

import sqlalchemy


def connect_unix_socket() -> sqlalchemy.engine.base.Engine:
    """Initializes a Unix socket connection pool for a Cloud SQL instance of Postgres."""
    # Note: Saving credentials in environment variables is convenient, but not
    # secure - consider a more secure solution such as
    # Cloud Secret Manager (https://cloud.google.com/secret-manager) to help
    # keep secrets safe.
    db_user = os.environ["DB_USER"]  # e.g. 'my-database-user'
    db_pass = os.environ["DB_PASS"]  # e.g. 'my-database-password'
    db_name = os.environ["DB_NAME"]  # e.g. 'my-database'
    unix_socket_path = os.environ[
        "INSTANCE_UNIX_SOCKET"
    ]  # e.g. '/cloudsql/project:region:instance'

    pool = sqlalchemy.create_engine(
        # Equivalent URL:
        # postgresql+pg8000://<db_user>:<db_pass>@/<db_name>
        #                         ?unix_sock=<INSTANCE_UNIX_SOCKET>/.s.PGSQL.5432
        # Note: Some drivers require the `unix_sock` query parameter to use a different key.
        # For example, 'psycopg2' uses the path set to `host` in order to connect successfully.
        sqlalchemy.engine.url.URL.create(
            drivername="postgresql+pg8000",
            username=db_user,
            password=db_pass,
            database=db_name,
            query={"unix_sock": f"{unix_socket_path}/.s.PGSQL.5432"},
        ),
        # ...
    )
    return pool

¿Qué sigue?

Para buscar y filtrar muestras de código para otros productos de Google Cloud , consulta el Google Cloud navegador de muestras.