Menghubungkan psycopg3 ke database dialek PostgreSQL
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Halaman ini menjelaskan cara menghubungkan driver psycopg3 PostgreSQL ke database dialek PostgreSQL di Spanner. psycopg3 adalah driver
Python untuk PostgreSQL.
Pastikan PGAdapter berjalan di mesin yang sama dengan aplikasi yang terhubung menggunakan driver psycopg3 PostgreSQL.
Untuk mengetahui informasi selengkapnya, lihat Mulai PGAdapter.
Hubungkan ke PGAdapter menggunakan TCP.
importpsycopgwithpsycopg.connect("host=APPLICATION_HOST port=PORT dbname=DATABASE_NAME sslmode=disable")asconn:conn.autocommit=Truewithconn.cursor()ascur:cur.execute("select 'Hello world!' as hello")print("Greeting from Cloud Spanner PostgreSQL:",cur.fetchone()[0])
Ganti kode berikut:
APPLICATION_HOST: nama host atau alamat IP
mesin tempat PGAdapter berjalan. Jika berjalan secara lokal,
gunakan localhost.
PORT: nomor port tempat PGAdapter
berjalan. Ubah ini di string koneksi jika PGAdapter berjalan di port kustom. Jika tidak, gunakan port default, 5432.
Soket domain Unix
Bagian ini menjelaskan cara menggunakan soket domain Unix untuk terhubung ke database dialek PostgreSQL. Gunakan soket domain Unix untuk latensi serendah mungkin.
Untuk menggunakan soket domain Unix, PGAdapter harus berjalan di host yang sama dengan aplikasi klien.
Pastikan driver JDBC PostgreSQL dimuat.
importpsycopgwithpsycopg.connect("host=/tmpport=PORTdbname=DATABASE_NAME") as conn:conn.autocommit=Truewithconn.cursor()ascur:cur.execute("select 'Hello world!' as hello")print("Greetings from Cloud Spanner PostgreSQL:",cur.fetchone()[0])
Ganti kode berikut:
/tmp: direktori soket domain default untuk
PGAdapter. Ini dapat diubah menggunakan argumen
command line -dir.
PORT: nomor port tempat PGAdapter
berjalan. Ubah ini di string koneksi jika PGAdapter berjalan di port kustom. Jika tidak, gunakan port default, 5432.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-17 UTC."],[],[],null,["# Connect psycopg3 to a PostgreSQL-dialect database\n\nThis page explains how to connect the [PostgreSQL psycopg3 driver](https://www.psycopg.org/psycopg3/) to\na PostgreSQL-dialect database in Spanner. `psycopg3` is a Python\ndriver for PostgreSQL.\n\n1. Verify that PGAdapter is running on the same machine as the\n application that is connecting using the PostgreSQL psycopg3 driver.\n\n export GOOGLE_APPLICATION_CREDENTIALS=/\u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eCREDENTIALS_FILE_PATH\u003c/span\u003e\u003c/var\u003e/credentials.json\n docker pull gcr.io/cloud-spanner-pg-adapter/pgadapter\n docker run \\\n -d -p 5432:5432 \\\n -v ${GOOGLE_APPLICATION_CREDENTIALS}:${GOOGLE_APPLICATION_CREDENTIALS}:ro \\\n -e GOOGLE_APPLICATION_CREDENTIALS \\\n gcr.io/cloud-spanner-pg-adapter/pgadapter \\\n -p \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003ePROJECT_NAME\u003c/span\u003e\u003c/var\u003e -i \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eINSTANCE_NAME\u003c/span\u003e\u003c/var\u003e \\\n -x\n\n For more information, see [Start PGAdapter](/spanner/docs/pgadapter-start).\n2. Connect to PGAdapter using TCP.\n\n import psycopg\n\n with psycopg.connect(\"host=\u003cvar translate=\"no\"\u003eAPPLICATION_HOST\u003c/var\u003e port=\u003cvar translate=\"no\"\u003ePORT\u003c/var\u003e dbname=\u003cvar translate=\"no\"\u003eDATABASE_NAME\u003c/var\u003e sslmode=disable\") as conn:\n conn.autocommit = True\n with conn.cursor() as cur:\n cur.execute(\"select 'Hello world!' as hello\")\n print(\"Greeting from Cloud Spanner PostgreSQL:\", cur.fetchone()[0])\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eAPPLICATION_HOST\u003c/var\u003e: the hostname or IP address of the machine where PGAdapter is running. If running locally, use `localhost`.\n - \u003cvar translate=\"no\"\u003ePORT\u003c/var\u003e: the port number where PGAdapter is running. Change this in the connection string if PGAdapter is running on a custom port. Otherwise, use the default port, `5432`.\n\n### Unix domain sockets\n\nThis section explains how to use Unix domain sockets to connect to a\nPostgreSQL-dialect database. Use Unix domain sockets for the lowest possible latency.\n\nTo use Unix domain sockets, PGAdapter must be running on the\nsame host as the client application.\n\nVerify the PostgreSQL JDBC driver is loaded. \n\n import psycopg\n\n with psycopg.connect(\"host=\u003cvar translate=\"no\"\u003e/tmp\u003c/var\u003e\n port=\u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003ePORT\u003c/span\u003e\u003c/var\u003e\n dbname=\u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eDATABASE_NAME\u003c/span\u003e\u003c/var\u003e\") as conn:\n conn.autocommit = True\n with conn.cursor() as cur:\n cur.execute(\"select 'Hello world!' as hello\")\n print(\"Greetings from Cloud Spanner PostgreSQL:\", cur.fetchone()[0])\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003e/tmp\u003c/var\u003e: the default domain socket directory for PGAdapter. This can be changed using the `-dir` command-line argument.\n- \u003cvar translate=\"no\"\u003ePORT\u003c/var\u003e: the port number where PGAdapter is running. Change this in the connection string if PGAdapter is running on a custom port. Otherwise, use the default port, `5432`.\n\nWhat's next\n-----------\n\n- Learn more about [PGAdapter](/spanner/docs/pgadapter).\n- For more information about PostgreSQL psycopg3 driver connection options, see [psycopg3 Connection\n Options](https://github.com/GoogleCloudPlatform/pgadapter/blob/-/docs/psycopg3.md) in the PGAdapter GitHub repository."]]