חיבור ל-Cloud SQL ל-PostgreSQL באמצעות Python דרך שקע Unix

יצירת חיבור למסד נתונים למכונת Cloud SQL ל-PostgreSQL באמצעות שקע Unix. הוא משתמש בספריית SQLAlchemy כדי ליצור מנוע חיבור, שמוגדר במיוחד עבור מנהל ההתקן pg8000. הסקריפט מאחזר פרמטרים נחוצים של חיבור, כמו משתמש מסד הנתונים, סיסמה, שם מסד הנתונים ונתיב שקע Unix, ממשתני סביבה. הגישה הזו שימושית במיוחד לאפליקציות שפועלות באותו אזור Google Cloud כמו מופע Cloud SQL, והיא מציעה דרך מאובטחת ויעילה לתקשר עם מסד הנתונים בלי צורך להגדיר רשימת היתרים של כתובות IP לחיבורי TCP.

המשך למידה

לקבלת הסבר מפורט שכולל את דוגמת הקוד הזו, קראו את המאמר:

דוגמת קוד

Python

כדי לבצע אימות ב-Cloud SQL ל-PostgreSQL, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

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

המאמרים הבאים

כדי לחפש ולסנן דוגמאות קוד למוצרים אחרים של Google Cloud , אפשר להיעזר בGoogle Cloud דפדפן לדוגמה.