LoginSignup
3
0

More than 1 year has passed since last update.

PythonからWatson Queryへ接続する

Last updated at Posted at 2022-11-08

はじめに

データ仮想化サービスであるWatson Qeuryに、Pythonから接続して操作する方法を説明する。
ライブラリとして、ibm-dbを利用する。

背景

Watson QueryはDb2/LUWと同様の認証・ライブラリを利用する一方で、Watson QueryはAPI認証でありユーザーID/パスワードを利用した認証は指定できない。
API認証によるibm-dbの設定手順について説明した記事が見当たらなかったため、当記事を作成した。

手順概要

  1. Watson Queryの認証情報を取得する
  2. 認証情報をサンプルプログラムに転記する
  3. サンプルプログラムを実行する

手順詳細

  1. Watson Queryの認証情報を取得する
    1. Watson Queryサービスにアクセスする
    2. サービス資格情報 → 新規資格情報をクリックimage.png
    3. 任意の名前を付けて追加をクリック image.png
    4. 作成された資格情報の中で、以下の値をメモする
      1. APIKEY : 資格情報ファイル.apikey
      2. DB名 : 資格情報ファイル.connection.legacy.database
      3. ホスト名 : 資格情報ファイル.connection.legacy.hosts[0].hostname
      4. ポート : 資格情報ファイル.connection.legacy.hosts[0].port
  2. 認証情報をサンプルプログラムに転記する
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]
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0