將 psycopg3 連線至 PostgreSQL 方言資料庫

本頁說明如何將 PostgreSQL psycopg3 驅動程式連線至 Spanner 中的 PostgreSQL 方言資料庫。psycopg3 是 PostgreSQL 的 Python 驅動程式。

  1. 確認 PGAdapter 與應用程式執行於同一部電腦,且應用程式使用 PostgreSQL psycopg3 驅動程式連線。

    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. 使用 TCP 連線至 PGAdapter。

    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:執行 PGAdapter 的電腦主機名稱或 IP 位址。如要在本機執行,請使用 localhost
    • PORT:PGAdapter 執行的通訊埠號碼。如果 PGAdapter 在自訂連接埠上執行,請在連線字串中變更此設定。否則請使用預設通訊埠 5432

Unix 網域通訊端

本節說明如何使用 Unix 網域通訊端連線至 PostgreSQL 方言資料庫。使用 Unix 網域通訊端,盡可能縮短延遲時間。

如要使用 Unix 網域通訊端,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
  • 如要進一步瞭解 PostgreSQL psycopg3 驅動程式連線選項,請參閱 PGAdapter GitHub 存放區中的 psycopg3 連線選項