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/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"') #获取数据实例

更多推荐

Python3 读取odps数据库数据