PyODPS集成了SQLAlchemy,可以使用SQLAlchemy查詢MaxCompute數據。本文為您介紹如何創建連接,并調用SQLAlchemy接口。
創建連接
創建連接語法格式如下。
import os
from sqlalchemy import create_engine
# 確保 ALIBABA_CLOUD_ACCESS_KEY_ID 環境變量設置為用戶 Access Key ID,
# ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境變量設置為用戶 Access Key Secret,
# 不建議直接使用 Access Key ID / Access Key Secret 字符串
conn_string = 'odps://%s:%s@<project>/?endpoint=<endpoint>' % (
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
)
engine = create_engine(conn_string)
conn = engine.connect()
ALIBABA_CLOUD_ACCESS_KEY_ID:具備訪問目標MaxCompute項目權限的AccessKey ID,建議設為環境變量。
您可以進入AccessKey管理頁面獲取AccessKey ID。
ALIBABA_CLOUD_ACCESS_KEY_SECRET:AccessKey ID對應的AccessKey Secret,建議設為環境變量。
您可以進入AccessKey管理頁面獲取AccessKey Secret。
project:目標MaxCompute項目的名稱。
此處為MaxCompute項目名稱,非工作空間名稱。您可以登錄MaxCompute控制臺,在左側導航欄選擇工作區 > 項目管理,查看MaxCompute項目名稱。
endpoint:目標MaxCompute項目所屬地域的Endpoint。
各地域的Endpoint信息,請參見Endpoint。
對于已有的ODPS對象o,調用o.to_global()
設為全局賬號后,在連接串中就不需要指定上述參數。命令示例如下。
from sqlalchemy import create_engine
o.to_global() # set ODPS object as global one
engine = create_engine('odps://')
調用SQLAlchemy接口
創建連接之后,就可以正常調用SQLAlchemy接口。建表、寫入數據、查詢示例如下。
建表
from sqlalchemy import Table, Column, Integer, String, MetaData metadata = MetaData() users = Table('users', metadata, Column('id', Integer), Column('name', String), Column('fullname', String), ) metadata.create_all(engine)
寫入數據
ins = users.insert().values(id=1, name='jack', fullname='Jack Jones') conn.execute(ins)
查詢數據
from sqlalchemy.sql import select s = select([users]) result = conn.execute(s) for row in result: print(row)
返回值
(1, 'jack', 'Jack Jones')
文檔內容是否對您有幫助?