psycopg3 の PostgreSQL 言語データベースへの接続

このページでは、PostgreSQL psycopg3 ドライバを Spanner の PostgreSQL 言語データベースに接続する方法について説明します。psycopg3 は、PostgreSQL 用の Python ドライバです。

  1. PostgreSQL psycopg3 ドライバを使用して接続しているアプリケーションと同じマシンで PGAdapter が実行されていることを確認します。

    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 について詳細を確認する。
  • PGAdapter GitHub リポジトリの psycopg3 接続オプションで PostgreSQL psycopg3 ドライバの接続オプションについて詳細を確認する。