Pythonを介して基本的なデータ分析を行うためにリモートPostgreSQLデータベースに接続したい。
Pythonとこの接続を確立する方法を説明するチュートリアルを見つけることができませんでした。どんな助けも大歓迎です。
psycopg2
モジュールを使用します。
接続文字列でsslオプションを使用するか、キーのWord引数として追加する必要があります。
import psycopg2
conn = psycopg2.connect(dbname='yourdb', user='dbuser', password='abcd1234', Host='server', port='5432', sslmode='require')
この場合、sslmode
はSSLが必要であることを指定します。
サーバー証明書の検証を実行するには、sslmode
をverify-full
またはverify-ca
に設定できます。 sslrootcert
でサーバー証明書へのパスを指定する必要があります。また、sslcert
とsslkey
の値をそれぞれクライアント証明書とキーに設定します。
詳細については、PostgreSQL 接続文字列のドキュメント (パラメーターキーワードも参照)および SSLサポート で説明されています。
Paramikoおよびsshtunnelでsshトンネルを使用することもできます。
import psycopg2
import paramiko
from sshtunnel import SSHTunnelForwarder
mypkey = paramiko.RSAKey.from_private_key_file('/path/to/private/key')
tunnel = SSHTunnelForwarder(
(Host_ip, 22),
ssh_username=username,
ssh_pkey=mypkey,
remote_bind_address=('localhost', psql_port))
tunnel.start()
conn = psycopg2.connect(dbname='gisdata', user=psql_username, password=psql_password, Host='127.0.0.1', port=tunnel.local_bind_port)