本文介绍如何通过Python连接AnalyticDB PostgreSQL版数据库。

前提条件

  • 已获取AnalyticDB PostgreSQL版实例的连接地址。

    • 如果您的客户端部署在与AnalyticDB PostgreSQL版实例在同一地域且网络类型相同的ECS上,则可以使用内网地址进行连接。登录云原生数据仓库AnalyticDB PostgreSQL版控制台基本信息页面的数据库连接信息区域,即可查看内网地址

    • 如果您的客户端部署在与AnalyticDB PostgreSQL版实例在不同地域或网络类型不同的ECS或者阿里云以外的系统上,则需要申请外网地址后使用外网地址进行连接。申请外网地址的方法,请参见管理外网地址

  • 已获取客户端的IP地址,并将客户端地址加入AnalyticDB PostgreSQL版实例白名单中。具体操作,请参见设置白名单

操作步骤

Python连接Greenplum和PostgreSQL时使用psycopg2工具。

  1. 安装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
  2. 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)