#!/usr/bin/env python# coding=utf-8import psycopg2
import sysdef query_lightning(lightning_conf, sql):"""Query data through Lightning by sqlArgs:lightning_conf: a map contains settings of 'dbname', 'user', 'password', 'host', 'port'sql: query submit to LightningReturns:result: the query result in format of list of rows"""result = Noneconn = Noneconn_str = Nonetry:conn_str = ("dbname={dbname} ""user={user} ""password={password} ""host={host} ""port={port}").format(**lightning_conf)except Exception, e:print >> sys.stderr, ("Invalid Lightning' configuration ""{}".format(e))sys.exit(1)try:conn = psycopg2.connect(conn_str)conn.set_session(autocommit=True) # This will disable transaction# started with keyword BEGIN,# which is currently not# supported by Lightning’ public servicecur = conn.cursor()# execute Lightning' querycur.execute(sql)# get resultresult = cur.fetchall()except Exception, e:print >> sys.stderr, ("Failed to query data through ""Lightning: {}".format(e))finally:if conn:conn.close()return resultif __name__ == "__main__":# step1. setup configurationlightning_conf = {"dbname": “your_project_name”,"user": "<your_maxcompute_access_id>", "password": "<your_maxcompute_access_key>", "host": "lightning.cn-shanghai.maxcompute.aliyun.com", #your region lightning endpoint"port": 443}# step2. issue a queryresult = query_lightning(lightning_conf, "select * from test”)# step3. print resultif result:for i in xrange(0, len(result)):print "Got %d row from Lightning:%s" % (i + 1, result[i])復(fù)制代碼