Auf dieser Seite wird erläutert, wie Sie den PostgreSQL-Treiber psycopg3 mit einer Datenbank mit PostgreSQL-Dialekt in Spanner verbinden. psycopg3
ist ein Python-Treiber für PostgreSQL.
Prüfen Sie, ob PGAdapter auf demselben Computer wie die Anwendung ausgeführt wird, die eine Verbindung über den PostgreSQL-Treiber psycopg3 herstellt.
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
Weitere Informationen finden Sie unter PGAdapter starten.
Verbindung zu PGAdapter über TCP herstellen
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])
Ersetzen Sie Folgendes:
- APPLICATION_HOST: der Hostname oder die IP-Adresse des Computers, auf dem PGAdapter ausgeführt wird. Bei einer lokalen Ausführung verwenden Sie
localhost
. - PORT: Die Portnummer, unter der PGAdapter ausgeführt wird. Ändern Sie dies im Verbindungsstring, wenn PGAdapter auf einem benutzerdefinierten Port ausgeführt wird. Verwenden Sie andernfalls den Standardport
5432
.
- APPLICATION_HOST: der Hostname oder die IP-Adresse des Computers, auf dem PGAdapter ausgeführt wird. Bei einer lokalen Ausführung verwenden Sie
Unix Domain Sockets
In diesem Abschnitt wird beschrieben, wie Sie Unix-Domain-Sockets verwenden, um eine Verbindung zu einer Datenbank mit PostgreSQL-Dialekt herzustellen. Verwenden Sie Unix-Domain-Sockets, um die Latenz so gering wie möglich zu halten.
Wenn Sie Unix-Domain-Sockets verwenden möchten, muss PGAdapter auf demselben Host wie die Clientanwendung ausgeführt werden.
Prüfen Sie, ob der PostgreSQL-JDBC-Treiber geladen ist.
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])
Ersetzen Sie Folgendes:
- /tmp: Das Standardverzeichnis für Domain-Sockets für PGAdapter. Dies kann mit dem
-dir
-Befehlszeilenargument geändert werden. - PORT: Die Portnummer, unter der PGAdapter ausgeführt wird. Ändern Sie dies im Verbindungsstring, wenn PGAdapter auf einem benutzerdefinierten Port ausgeführt wird. Verwenden Sie andernfalls den Standardport
5432
.
Nächste Schritte
- Weitere Informationen zu PGAdapter.
- Weitere Informationen zu den Verbindungsoptionen für den PostgreSQL-Treiber „psycopg3“ finden Sie im GitHub-Repository für PGAdapter unter psycopg3 Connection Options.