Verbindung zu Cloud SQL for PostgreSQL mit Python über einen Unix-Socket herstellen

Stellt eine Datenbankverbindung zu einer Cloud SQL for PostgreSQL-Instanz über einen Unix-Socket her. Dazu wird die SQLAlchemy-Bibliothek verwendet, um eine Verbindungs-Engine zu erstellen, die speziell für den pg8000-Treiber konfiguriert ist. Das Skript ruft die erforderlichen Verbindungsparameter wie Datenbanknutzer, Passwort, Datenbankname und Unix-Socket-Pfad aus Umgebungsvariablen ab. Dieser Ansatz ist besonders nützlich für Anwendungen, die in derselben Google Cloud-Region wie die Cloud SQL-Instanz ausgeführt werden. Er bietet eine sichere und effiziente Möglichkeit, mit der Datenbank zu kommunizieren, ohne dass Sie IP-Zulassungslisten für TCP-Verbindungen konfigurieren müssen.

Weitere Informationen

Eine ausführliche Dokumentation, die dieses Codebeispiel enthält, finden Sie hier:

Codebeispiel

Python

Richten Sie zur Authentifizierung bei Cloud SQL for PostgreSQL Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

Nächste Schritte

Wenn Sie nach Codebeispielen für andere Google Cloud -Produkte suchen und filtern möchten, können Sie den Google Cloud -Beispielbrowser verwenden.