Como se conectar ao Cloud SQL para PostgreSQL com Python usando um soquete Unix

Estabelece uma conexão de banco de dados com uma instância do Cloud SQL para PostgreSQL usando um soquete Unix. Ele usa a biblioteca SQLAlchemy para criar um mecanismo de conexão configurado especificamente para o driver pg8000. O script recupera os parâmetros de conexão necessários, como usuário, senha, nome do banco de dados e caminho do soquete Unix, das variáveis de ambiente. Essa abordagem é particularmente útil para aplicativos executados na mesma região do Google Cloud que a instância do Cloud SQL, oferecendo uma maneira segura e eficiente de se comunicar com o banco de dados sem precisar configurar a lista de permissões de IP para conexões TCP.

Mais informações

Para ver a documentação detalhada que inclui este exemplo de código, consulte:

Exemplo de código

Python

Para autenticar-se no Cloud SQL para PostgreSQL, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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

A seguir

Para pesquisar e filtrar exemplos de código de outros produtos do Google Cloud , consulte a pesquisa de exemplos de código doGoogle Cloud .