全部產品
Search
文件中心

:整合SQLAlchemy

更新時間:Feb 28, 2024

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')