はじめに
データ仮想化サービスであるWatson Qeuryに、Pythonから接続して操作する方法を説明する。
ライブラリとして、ibm-dbを利用する。
背景
Watson QueryはDb2/LUWと同様の認証・ライブラリを利用する一方で、Watson QueryはAPI認証でありユーザーID/パスワードを利用した認証は指定できない。
API認証によるibm-dbの設定手順について説明した記事が見当たらなかったため、当記事を作成した。
手順概要
- Watson Queryの認証情報を取得する
- 認証情報をサンプルプログラムに転記する
- サンプルプログラムを実行する
手順詳細
- Watson Queryの認証情報を取得する
- 認証情報をサンプルプログラムに転記する
wq_query.py
import ibm_db, ibm_db_dbi as dbi
import pandas as pd
def wq_sql(sql_query_wq):
conn_str_wq = 'DATABASE={};HOSTNAME={};PORT={};PROTOCOL=TCPIP;Security=SSL;Authentication=GSSplugin;APIKEY={};' \
.format(
<DB名>,
<ホスト名>,
<ポート名>,
<APIKEY>
)
conn_handler_wq = ibm_db.connect(conn_str_wq, '', '')
trial_connection_wq = dbi.Connection(conn_handler_wq)
df_prep=pd.read_sql_query(sql_query_wq, con=trial_connection_wq)
print(df_prep.head())
query = <SQLクエリ>
#query = "select * from syscat.tables;"
wq_sql(query)
3 . サンプルプログラムを実行する
結果
TABSCHEMA TABNAME OWNER ... EXTENDED_ROW_SIZE PCTEXTENDEDROWS REMARKS
0 SYSIBM SYSLIBRARYAUTH SYSIBM ... N -1.0 None
1 SYSIBM SYSEVENTTABLES SYSIBM ... N -1.0 None
2 SYSIBM SYSROUTINEPROPERTIES SYSIBM ... N -1.0 None
3 SYSIBM SYSCOMMENTS SYSIBM ... N -1.0 None
4 SYSIBM SYSSEQUENCEAUTH SYSIBM ... N -1.0 None
[5 rows x 85 columns]