Python Client

Prev Next

VPC環境で利用できます。

Data Queryで提供する Python Clientの使用方法について説明します。

準備事項

Python Clientを使用する環境に Python 3.9以上がインストールされている必要があります。

使用方法

Data Query Python Clientの使用方法について説明します。

1. パッケージのインストール

PyPI.orgに公開されている ncp-dataqueryパッケージをインストールします。

# [required] ncp-dataqueryパッケージをインストール
pip install ncp-dataquery
# [optional] sqlalchemy形式で Data Queryを連携する場合、当該パッケージをインストール
pip install sqlalchemy

2. Python Clientの連携例

認証方式

NcpIamAuthentication クラスを使用して NCP IAM認証方式をサポートします。
ユーザーの AccessKeyと SecretKeyを入力する必要があります。

クエリの提出と結果確認

コードを作成してクエリを提出し、結果を確認します。

例)

# DBAPI
from ncp_dataquery.dbapi import connect
from ncp_dataquery.auth import NcpIamAuthentication

conn = connect(
    host="<dataquery_endpoint>",
    port=443,
    auth=NcpIamAuthentication("<access_key>", "<secret_key>"),
    http_scheme="https",
    reuse_query_result=True, # optional, default=False
    reuse_query_max_age=5,   # optional, default=60, range=1~10080 (unit: minute)
)
cur = conn.cursor()
cur.execute("SELECT * FROM public_data.korea_national_railway.subway_seoul_capital_area LIMIT 10")
rows = cur.fetchall()
for row in rows:
    print(" ".join(row))
# SQLAlchemy
from sqlalchemy import create_engine, text
from ncp_dataquery.auth import NcpIamAuthentication

engine = create_engine(
    "trino://<dataquery_endpoint>:443/<catalog>",
    connect_args={
        "auth": NcpIamAuthentication("<access_key>", "<secret_key>"),
        "http_scheme": "https",
        "reuse_query_result": True, # optional, default=False
        "reuse_query_max_age": 5,   # optional, default=60, range=1~10080 (unit: minute)
    }
)

with engine.connect() as conn:
    result = conn.execute(text("SELECT * FROM public_data.korea_national_railway.subway_seoul_capital_area LIMIT 10"))
    for row in result:
        print(f"{row}")
// 結果例
KORAIL 3号線 大化駅 126.747756 37.675883
KORAIL 3号線 大谷駅 126.811025 37.631629
KORAIL 3号線 花井駅 126.832503 37.637837
KORAIL 3号線 元興駅 126.873239 37.650709
KORAIL 3号線 注葉駅 126.761232 37.670138
KORAIL 3号線 鼎鉢山駅 126.773254 37.659709
KORAIL 3号線 馬頭駅 126.777641 126.777641
KORAIL 3号線 白石駅 126.788109 37.642973
KORAIL 3号線 元堂駅 126.842891 37.653103
KORAIL 3号線 三松駅 126.895559 37.653096

使用可能オプション

  • DBAPI: connect() の引数値で入力します。
  • SQLAlchemy: create_engine()の connect_args引数値で入力します。
オプション名 データタイプ 入力値 必須有無 備考
server String Data Query Endpoint Y リージョン別 Data Query Service Endpointを参照
reuse_query_result Boolean true または false N * default : false
reuse_query_max_age Integer 1 ~ 10,080 N * default : 60
* reuse-query-result値が true の場合にのみ使用されます。(単位: 分)

リージョン別 Data Query Service Endpoint
現在は KRリージョンのみ使用でき、リージョンを拡大する予定です。

リージョン Endpoint
KR kr.dataquery.naverncp.com
参考

dataquery-python-clientは trino-python-clientをベースに提供します。上記で案内されたオプション以外の追加内容は、Trinoドキュメントをご参照ください。