חיבור ל-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 .