קישור של psycopg3 למסד נתונים של ניב PostgreSQL

בדף הזה מוסבר איך לקשר את הדרייבר psycopg3 של PostgreSQL למסד נתונים בניב PostgreSQL ב-Spanner. ‫psycopg3 הוא דרייבר Python ל-PostgreSQL.

  1. מוודאים ש-PGAdapter פועל באותו מחשב שבו פועלת האפליקציה שמתחברת באמצעות מנהל ההתקן psycopg3 של PostgreSQL.

    export GOOGLE_APPLICATION_CREDENTIALS=/CREDENTIALS_FILE_PATH/credentials.json
    docker pull gcr.io/cloud-spanner-pg-adapter/pgadapter
    docker run \
      -d -p 5432:5432 \
      -v ${GOOGLE_APPLICATION_CREDENTIALS}:${GOOGLE_APPLICATION_CREDENTIALS}:ro \
      -e GOOGLE_APPLICATION_CREDENTIALS \
      gcr.io/cloud-spanner-pg-adapter/pgadapter \
      -p PROJECT_NAME -i INSTANCE_NAME \
      -x
    

    מידע נוסף זמין במאמר בנושא הפעלת PGAdapter.

  2. מתחברים ל-PGAdapter באמצעות TCP.

    import psycopg
    
    with psycopg.connect("host=APPLICATION_HOST port=PORT dbname=DATABASE_NAME sslmode=disable") as conn:
      conn.autocommit = True
      with conn.cursor() as cur:
        cur.execute("select 'Hello world!' as hello")
        print("Greeting from Cloud Spanner PostgreSQL:", cur.fetchone()[0])
    

    מחליפים את מה שכתוב בשדות הבאים:

    • APPLICATION_HOST: שם המארח או כתובת ה-IP של המכונה שבה PGAdapter פועל. אם מריצים באופן מקומי, צריך להשתמש ב-localhost.
    • PORT: מספר היציאה שבה PGAdapter פועל. אם PGAdapter פועל ביציאה מותאמת אישית, צריך לשנות את ההגדרה הזו במחרוזת החיבור. אחרת, משתמשים ביציאה שמוגדרת כברירת מחדל, 5432.

Unix domain sockets

בקטע הזה מוסבר איך להשתמש בשקעי דומיין של Unix כדי להתחבר למסד נתונים בניב PostgreSQL. כדי להשיג את זמן האחזור הנמוך ביותר, כדאי להשתמש בשקעי דומיין של Unix.

כדי להשתמש ב-Unix domain sockets, ‏ PGAdapter צריך לפעול באותו מארח כמו אפליקציית הלקוח.

מוודאים שמנהל ההתקן של PostgreSQL JDBC נטען.

import psycopg

with psycopg.connect("host=/tmp
                      port=PORT
                      dbname=DATABASE_NAME") as conn:
conn.autocommit = True
with conn.cursor() as cur:
  cur.execute("select 'Hello world!' as hello")
  print("Greetings from Cloud Spanner PostgreSQL:", cur.fetchone()[0])

מחליפים את מה שכתוב בשדות הבאים:

  • /tmp: ספריית ברירת המחדל של שקע הדומיין עבור PGAdapter. אפשר לשנות את זה באמצעות ארגומנט שורת הפקודה -dir.
  • PORT: מספר היציאה שבה PGAdapter פועל. אם PGAdapter פועל ביציאה מותאמת אישית, צריך לשנות את ההגדרה הזו במחרוזת החיבור. אחרת, משתמשים ביציאה שמוגדרת כברירת מחדל, 5432.

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

  • PGAdapter
  • מידע נוסף על אפשרויות החיבור של דרייבר psycopg3 של PostgreSQL זמין במאמר psycopg3 Connection Options במאגר PGAdapter GitHub.