如果未安装pyodps包,则需要先安装:
pip install pyodps
from odps import ODPS
from odps import DataFrame
import pandas as pd
from collections import defaultdict
o = ODPS(access_id='access id', #登陆账号
secret_access_key='password', #登陆密码
project='projectname', #odps上的项目名称
endpoint='http://service.odps.aliyun.com/api') #官方提供的接口
方法一:通过odps内置DataFrame读取,该方法读取的数据结构类型为odps.df.expr.core.DataFrame
def get_odps_table(tb_name):
data = DataFrame(o.get_table(tb_name))
data['ds'] = data['ds'].astype('int')
return data
rdata = get_odps_table('tb_name') #获取表数据实例
方法二:通过sql获取数据,该方法得到的数据类型为pandas.core.frame.DataFrame。
def exe_sql(sql):
data = []
with o.execute_sql(sql).open_reader() as reader:
d = defaultdict(list) #collection默认一个dict
for record in reader:
for res in record:
d[res[0]].append(res[1]) #解析record中的每一个元组,存储方式为(k,v),以k作为key,存储每一列的内容;
data = pd.DataFrame.from_dict(d,orient='index').T #转换为数据框,并转置,不转置的话是横条数据
return data
rdata = exe_sql('select aname,bname from tablename where aid = "1111"') #获取数据实例