各製品の資料を入手。
詳細はこちら →Linux/UNIX 上のPython からHubDB のデータにデータ連携
CData ODBC Driver を使って、Linux/UNIX 上のPython アプリケーションからHubDB のデータへのデータ連携を実現します。
最終更新日:2022-11-27
この記事で実現できるHubDB 連携のシナリオ
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData ODBC Driver for HubDB を使えば、豊富なPython のエコシステムを使ったデータ連携が簡単に行えます。CData Linux/UNIX ODBC Driver for HubDB とpyodbc module を使って、簡単にHubDB に連携するPython アプリケーションを構築したり、データ分析が手軽に行えます。本記事では、pyodbc のビルトイン関数を使って、HubDB に接続し、クエリを実行、表示する方法を説明します。
CData ODBC ドライバとは?
CData ODBC ドライバは、以下のような特徴を持ったリアルタイムデータ連携ソリューションです。
- HubDB をはじめとする、CRM、MA、会計ツールなど多様なカテゴリの270種類以上のSaaS / オンプレミスデータソースに対応
- 多様なアプリケーション、ツールにHubDB のデータを連携
- ノーコードでの手軽な接続設定
- 標準 SQL での柔軟なデータ読み込み・書き込み
CData ODBC ドライバでは、1.データソースとしてHubDB の接続を設定、2.Linux 側でODBC Driver との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。
CData ODBC Drivers をUNIX/Linux マシンで利用
CData ODBC Drivers は、Ubuntu、Debian、RHEL、CentOS、Fedora などの様々なRed Hat ベースおよびDebian ベースのシステムでサポートされています。必要なライブラリとパッケージもいくつかあり、システムによってはそれらがデフォルトでインストールされる場合があります。Linux オペレーティングシステムのサポートされているバージョンと必要なライブラリの詳細については、ヘルプドキュメント(オンラインでインストールおよび検索)の[はじめに]セクションを参照してください。
Driver Manager のインストール
ドライバーをインストールする前に、システムにドライバーマネジャーがあることを確認してください。この記事では、広くサポートされている無料のオープンソースODBC ドライバーマネジャーであるunixODBC を使用します。
Ubuntu のようなDebian ベースのシステムの場合、APT パッケージマネジャーを使用してunixODBC をインストールできます。
$ sudo apt-get install unixODBC unixODBC-dev
Red Hat Linux に基づくシステムの場合、yum またはdnf を使用して、unixODBC をインストールできます。
$ sudo yum install unixODBC unixODBC-devel
unixODBC ドライバーマネジャーは、odbcinst.ini ファイルからドライバーに関する情報を読み取り、odbc.ini ファイルからデータソースに関する情報を読み取ります。 ターミナルに以下のコマンドを入力すると、システム上の構成ファイルの場所を特定できます。
$ odbcinst -j
コマンドの出力には、ODBC データソースと登録済みのODBC ドライバーの構成ファイルの場所が表示されます。 ユーザーデータソースには、odbc.ini が存在するホームフォルダを持つユーザーアカウントからのみアクセスできます。システムのデータソースには、すべてのユーザーがアクセスできます。 以下は、このコマンドの出力例です。
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/myuser/.odbc.ini
SQLULEN Size.......:8
SQLLEN Size........:8
SQLSETPOSIROW Size.:8
ドライバーのインストール
標準パッケージ形式(Debian .deb パッケージ形式または.rpm ファイル形式)でドライバーをダウンロードすることができます。フィルをダウンロードしたら、ターミナルからドライバーをインストールできます。
ドライバーインストーラーは、ドライバーをunixODBC に登録し、システムDSN を作成します。これは、後にODBC 接続をサポートするツールやアプリケーションで使用できます。
Ubuntu のようなDebian ベースのシステムの場合、sudo を付けるか、root として次のコマンドを実行します。
$ dpkg -i /path/to/package.deb
Red Hat システムおよび.rpms をサポートするその他のシステムの場合には、sudo またはroot として以下のコマンドを実行します。
$ rpm -i /path/to/package.rpm
ドライバーがインストールされると、unixODBC ドライバーマネジャーを使用して、登録されたドライバーと定義されたデータソースを一覧表示できます。
登録済みドライバーを一覧表示
$ odbcinst -q -d
CData ODBC Driver for HubDB
...
定義されたデータソースを一覧表示
$ odbcinst -q -s
CData HubDB Source
...
CData ODBC Driver for HubDB をunixODBC で使用するには、ドライバーがUTF-16 を使用するように構成されていることを確認してください。これを行うには、以下のように、インストール場所のlib フォルダ(通常は、/opt/cdata/cdata-odbc-driver-for-hubdb) にあるドライバーのINI ファイル(cdata.odbc.hubdb.ini) を編集します。
cdata.odbc.hubdb.ini
...
[Driver]
DriverManagerEncoding = UTF-16
DSN の変更
ドライバーのインストールにより、システムDSN が事前定義されます。システムデータソースファイル(/etc/odbc.ini)を編集し、必要な接続プロパティを定義することで、DSN を変更できます。さらに、$HOME/.odbc.ini で変更するためにroot アクセスを必要としない、ユーザー固有のDSN を作成できます。
HubDBデータソースへの接続には、パブリックHubSpotアプリケーションを使用したOAuth認証とプライベートアプリケーショントークンを使用した認証の2つの方法があります。
カスタムOAuthアプリを使用する
すべてのOAuthフローでAuthSchemeを"OAuth"に設定する必要があります。特定の認証ニーズ(デスクトップアプリケーション、Webアプリケーション、ヘッドレスマシン)に必要な接続プロパティについては、ヘルプドキュメントを確認してください。
アプリケーションを登録し、OAuthクライアント認証情報を取得するには、以下の手順を実行してください。
- HubSpotアプリ開発者アカウントにログインします。
- アプリ開発者アカウントである必要があります。標準のHubSpotアカウントではパブリックアプリを作成できません。
- 開発者アカウントのホームページで、アプリタブをクリックします。
- アプリを作成をクリックします。
- アプリ情報タブで、ユーザーが接続する際に表示される値を入力し、必要に応じて変更します。これらの値には、パブリックアプリケーション名、アプリケーションロゴ、アプリケーションの説明が含まれます。
- 認証タブで、「リダイレクトURL」ボックスにコールバックURLを入力します。
- デスクトップアプリケーションを作成する場合は、http://localhost:33333のようなローカルにアクセス可能なURLに設定します。
- Webアプリケーションを作成する場合は、ユーザーがアプリケーションを承認した際にリダイレクトされる信頼できるURLに設定します。
- アプリを作成をクリックします。HubSpotがアプリケーションとそれに関連する認証情報を生成します。
- 認証タブで、クライアントIDとクライアントシークレットを確認します。これらは後でドライバーを設定する際に使用します。
スコープの下で、アプリケーションの意図する機能に必要なスコープを選択します。
テーブルにアクセスするには、最低限以下のスコープが必要です:
- hubdb
- oauth
- crm.objects.owners.read
- 変更を保存をクリックします。
- 統合に必要な機能にアクセスできる本番ポータルにアプリケーションをインストールします。
- 「インストールURL(OAuth)」の下で、完全なURLをコピーをクリックして、アプリケーションのインストールURLをコピーします。
- コピーしたリンクをブラウザで開きます。アプリケーションをインストールする標準アカウントを選択します。
- アプリを接続をクリックします。結果のタブは閉じて構いません。
プライベートアプリを使用する
HubSpotプライベートアプリケーショントークンを使用して接続するには、AuthSchemeプロパティを"PrivateApp"に設定します。
以下の手順に従ってプライベートアプリケーショントークンを生成できます:
- HubDBアカウントで、メインナビゲーションバーの設定アイコン(歯車)をクリックします。
- 左サイドバーメニューで、統合 > プライベートアプリに移動します。
- プライベートアプリを作成をクリックします。
- 基本情報タブで、アプリケーションの詳細(名前、ロゴ、説明)を設定します。
- スコープタブで、プライベートアプリケーションがアクセスできるようにしたい各スコープに対して読み取りまたは書き込みを選択します。
- テーブルにアクセスするには、最低限hubdbとcrm.objects.owners.readが必要です。
- アプリケーションの設定が完了したら、右上のアプリを作成をクリックします。
- アプリケーションのアクセストークンに関する情報を確認し、作成を続行をクリックし、その後トークンを表示をクリックします。
- コピーをクリックして、プライベートアプリケーショントークンをコピーします。
接続するには、PrivateAppTokenを取得したプライベートアプリケーショントークンに設定します。
/etc/odbc.ini または$HOME/.odbc.ini
[CData HubDB Source]
Driver = CData ODBC Driver for HubDB
Description = My Description
AuthScheme = OAuth
OAuthClientID = MyOAuthClientID
OAuthClientSecret = MyOAuthClientSecret
CallbackURL = http://localhost:33333
これらの構成ファイルの使用に関する具体的な情報については、、ヘルプドキュメントを参照してください。
以下のステップに従ってpyodbc をインストールし、Python オブジェクトを介してHubDB へのアクセスを開始できます。
pyodbc のインストール
pip ユーティリティを使用してモジュールをインストールできます。
pip install pyodbc
必ず以下のコードでモジュールをインポートしてください。
import pyodbc
Python でのHubDB のデータへの接続
これで、ODBC 接続文字列またはDSN で接続できます。以下は、接続文字列の構文です。
cnxn = pyodbc.connect('DRIVER={CData ODBC Driver for HubDB};AuthScheme=OAuth;OAuthClientID=MyOAuthClientID;OAuthClientSecret=MyOAuthClientSecret;CallbackURL=http://localhost:33333;')
以下は、DSN の構文です。
cnxn = pyodbc.connect('DSN=CData HubDB Sys;')
HubDB へのSQL の実行
Cursor をインスタンス化し、Cursor クラスのexecute メソッドを使用してSQL ステートメントを実行します。
cursor = cnxn.cursor()
選択
fetchall、fetchone、およびfetchmany を使用し、SELECT ステートメントから返されたRows を取得できます。
import pyodbc
cursor = cnxn.cursor()
cnxn = pyodbc.connect('DSN=CData HubDB Source;User=MyUser;Password=MyPassword')
cursor.execute("SELECT PartitionKey, Name FROM NorthwindProducts WHERE Id = '1'")
rows = cursor.fetchall()
for row in rows:
print(row.PartitionKey, row.Name)
パラメータ化されたクエリをシーケンスまたは因数リストで提供できます。
cursor.execute(
"SELECT PartitionKey, Name
FROM NorthwindProducts
WHERE Id = ?", '1',1)
挿入
INSERT コマンドもexecute メソッドを使用します。ただし、挿入後に変更が失われないためにcommit メソッドを呼び出す必要があります。
cursor.execute("INSERT INTO NorthwindProducts (Id) VALUES ('1')")
cnxn.commit()
更新と削除
挿入の場合と同様に、更新または削除の場合でも、execute を呼び出した後、commit を呼び出す必要があります。
cursor.execute("UPDATE NorthwindProducts SET Id = '1'")
cnxn.commit()
メタデータの発見
getinfo メソッドを使用してデータソースやドライバーの機能に関する情報などのデータを取得できます。getinfo メソッドは、入力をODBC SQLGetInfo メソッドに渡します。
cnxn.getinfo(pyodbc.SQL_DATA_SOURCE_NAME)
CData ODBC Driver for HubDB を使用してHubDB に接続できるLinux/UNIX 環境で、Python アプリを構築することができるようになりました。
HubDB からLinux へのデータ連携には、ぜひCData ODBC ドライバをご利用ください
このようにCData ODBC ドライバと併用することで、270を超えるSaaS、NoSQL データをコーディングなしで扱うことができます。30日の無償評価版が利用できますので、ぜひ自社で使っているクラウドサービスやNoSQL と合わせて活用してみてください。
CData ODBC ドライバは日本のユーザー向けに、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。