本文介绍如何通过Python连接AnalyticDB PostgreSQL版数据库。
前提条件
已获取AnalyticDB PostgreSQL版实例的连接地址。
如果您的客户端部署在与AnalyticDB PostgreSQL版实例在同一地域且网络类型相同的ECS上,则可以使用内网地址进行连接。登录云原生数据仓库AnalyticDB PostgreSQL版控制台。在基本信息页面的数据库连接信息区域,即可查看内网地址。
如果您的客户端部署在与AnalyticDB PostgreSQL版实例在不同地域或网络类型不同的ECS或者阿里云以外的系统上,则需要申请外网地址后使用外网地址进行连接。申请外网地址的方法,请参见管理外网地址。
已获取客户端的IP地址,并将客户端地址加入AnalyticDB PostgreSQL版实例白名单中。具体操作,请参见设置白名单。
操作步骤
Python连接Greenplum和PostgreSQL时使用psycopg2工具。
安装psycopg2。在CentOS系统,安装方法有如下三种:
执行如下命令:
yum -y install python-psycopg2
执行如下命令:
pip install psycopg2
从源码安装:
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
psycopg2安装完成后,需要设置PYTHONPATH环境变量,设置完成后即可引用该变量。环境变量设置如下:
import psycopg2 //SQL语句。 sql = '<SELECT * FROM gp_segment_configuration;>' //数据库连接信息,分别为数据库名、用户名、用户密码。 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)