このトピックでは、Pythonを使用してAnalyticDB for PostgreSQLインスタンスに接続する方法について説明します。
前提条件
AnalyticDB for PostgreSQLインスタンスの内部エンドポイントまたはパブリックエンドポイントを取得します。
AnalyticDB for PostgreSQLインスタンスと同じリージョンにあり、同じネットワークタイプを使用するElastic Compute Service (ECS) インスタンスにクライアントがデプロイされている場合、内部エンドポイントを使用してAnalyticDB for PostgreSQLインスタンスに接続できます。 にログインします。AnalyticDB for PostgreSQLコンソール. [基本情報] ページの [データベース接続情報] セクションで、インスタンスの内部エンドポイントを表示します。
クライアントが別のリージョンにあるECSインスタンスにデプロイされている場合、またはAnalyticDB for PostgreSQLインスタンスまたはAlibaba Cloud外部のシステムとは異なるネットワークタイプを使用している場合は、パブリックエンドポイントを申請し、パブリックエンドポイントを使用してAnalyticDB for PostgreSQLインスタンスに接続する必要があります。 パブリックエンドポイントを申請する方法については、「パブリックエンドポイントの管理」をご参照ください。
クライアントのIPアドレスがAnalyticDB for PostgreSQLインスタンスのIPアドレスホワイトリストに追加されます。 詳細については、「IPアドレスホワイトリストの設定」をご参照ください。
手順
psycopg2を使用して、PythonでGreenplumまたはPostgreSQLに接続できます。
psycopg2 をインストールします。 CentOSを使用する場合は、次のいずれかのインストール方法を使用できます。
方法1:
yum -y install python-psycopg2コマンドを実行します。方法2:
pip install psycopg2コマンドを実行します。方法3: ソースコードを使用します。
yum install -y postgresql-devel* wget http://initd.org/psycopg/tarballs/PSYCOPG-2-6/psycopg2-2.6.tar.gz tar xf psycopg2-2.6.tar.gz cd psycopg2-2.6 python setup.py build sudo python setup.py install
後続の変数参照用にPYTHONPATH環境変数を設定します。 サンプルコード:
import psycopg2 // The SQL statement. sql = '<SELECT * FROM gp_segment_configuration;>' // The database name, username, and password that are used to connect to the instance. conn = psycopg2.connect(database='<gpdb>', user='<mygpdb>', password='<mygpdb>', host='mygpdbpub.gpdb.rds.aliyuncs.com', port=5432) conn.autocommit = True cursor = conn.cursor() cursor.execute(sql) rows = cursor.fetchall() for row in rows: print row conn.commit() conn.close()サンプル出力:
(1, -1, 'p', 'p', 's', 'u', 3022, '192.168.2.158', '192.168.2.158', None, None) (6, -1, 'm', 'm', 's', 'u', 3019, '192.168.2.47', '192.168.2.47', None, None) (2, 0, 'p', 'p', 's', 'u', 3025, '192.168.2.148', '192.168.2.148', 3525, None) (4, 0, 'm', 'm', 's', 'u', 3024, '192.168.2.158', '192.168.2.158', 3524, None) (3, 1, 'p', 'p', 's', 'u', 3023, '192.168.2.158', '192.168.2.158', 3523, None) (5, 1, 'm', 'm', 's', 'u', 3026, '192.168.2.148', '192.168.2.148', 3526, None)