Python3 读取odps数据库数据
pyodps安装
如果未安装pyodps包,则需要先安装:
pip install pyodps
ODPS常用包导入
from odps import ODPS
from odps import DataFrame
import pandas as pd
from collections import defaultdict
连接odps数据库
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])
data = pd.DataFrame.from_dict(d,orient='index').T
return data
rdata = exe_sql('select aname,bname from tablename where aid = "1111"') #获取数据实例