Se connecter à Cloud SQL pour PostgreSQL avec Python via un socket Unix

Établit une connexion de base de données à une instance Cloud SQL pour PostgreSQL à l'aide d'un socket Unix. Il utilise la bibliothèque SQLAlchemy pour créer un moteur de connexion, configuré spécifiquement pour le pilote pg8000. Le script récupère les paramètres de connexion nécessaires, tels que l'utilisateur de la base de données, le mot de passe, le nom de la base de données et le chemin du socket Unix, à partir des variables d'environnement. Cette approche est particulièrement utile pour les applications s'exécutant dans la même région Google Cloud que l'instance Cloud SQL. Elle offre un moyen sécurisé et efficace de communiquer avec la base de données sans avoir à configurer de liste d'adresses IP autorisées pour les connexions TCP.

En savoir plus

Pour obtenir une documentation détaillée incluant cet exemple de code, consultez la page suivante :

Exemple de code

Python

Pour vous authentifier auprès de Cloud SQL pour PostgreSQL, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Étape suivante

Pour rechercher et filtrer des exemples de code pour d'autres produits Google Cloud , consultez l'explorateur d'exemplesGoogle Cloud .