Linux/UNIX 上のPython からFedEx データにデータ連携

詳細情報をご希望ですか?

無償トライアル:

ダウンロードへ

製品の詳細情報へ:

FedEx ODBC Driver

FedEx ODBC Driver を使って、ODBC 接続をサポートするあらゆるアプリケーション・ツールからFedEx にデータ連携。

FedEx データにデータベースと同感覚でアクセスして、FedEx のPackages、Shipments、Recipients データに使い慣れたODBC インターフェースで双方向連携。



CData ODBC Driver for FedEx を使って、Linux/UNIX 上のPython アプリケーションからFedEx データへのデータ連携が可能になります。Python でpyodbc module for ODBC を活用しましょう。

豊富なPython のエコシステムでデータ連携が簡単に行えます。CData Linux/UNIX ODBC Driver for FedEx とpyodbc module を使って、簡単にFedEx に連携するPython アプリケーションが構築できます。本記事では、pyodbc のビルトイン関数を使って、FedEx に接続し、クエリを実行、表示する方法を説明します。

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 FedEx ...

定義されたデータソースを一覧表示

$ odbcinst -q -s CData FedEx Source ...

CData ODBC Driver for FedEx をunixODBC で使用するには、ドライバーがUTF-16 を使用するように構成されていることを確認してください。これを行うには、以下のように、インストール場所のlib フォルダ(通常は、/opt/cdata/cdata-odbc-driver-for-fedex) にあるドライバーのINI ファイル(cdata.odbc.fedex.ini) を編集します。

cdata.odbc.fedex.ini

... [Driver] DriverManagerEncoding = UTF-16

DSN の変更

ドライバーのインストールにより、システムDSN が事前定義されます。システムデータソースファイル(/etc/odbc.ini)を編集し、必要な接続プロパティを定義することで、DSN を変更できます。さらに、$HOME/.odbc.ini で変更するためにroot アクセスを必要としない、ユーザー固有のDSN を作成できます。

FedEx サービスでのアクションを認証するためには以下の5つの情報が必要です。

  • Server:リクエストを送信するURL を制御します。一般的なテストオプションは次のとおりです:"https://gatewaybeta.fedex.com:443/xml"、"https://wsbeta.fedex.com:443/xml"、"https://gatewaybeta.fedex.com:443/web-service"、および"https://wsbeta.fedex.com:443/web-service"
  • DeveloperKey:荷送人のID の認証キーの識別子部分。この値は、登録後にFedEx から提供されます。
  • Password:荷送人のID の認証キーのシークレット部分。この値は、登録後にFedEx から提供されます。
  • AccountNumber:この有効な9桁のFedEx アカウント番号は、FedEx サーバーへのログインに使用されます。
  • MeterNumber:この値はFedEx にリクエストを送信するために使用されます。この値は、登録後にFedEx から提供されます。
  • PrintLabelLocation:このプロパティはGenerateLabels またはGenerateReturnLabels ストアドプロシージャを使用するために必要です。これは、生成されたラベルを格納するフォルダの場所に設定する必要があります。

キャッシュデータベース

FedEx から利用できる便利なタスクの多くは、大量のデータを必要とします。データを簡単に入力して後で呼び出すことができるように、キャッシュデータベースを活用してこれらのリクエストを行います。キャッシュ接続プロパティを設定する必要があります。

  • CacheProvider: The specific database you are using to cache with. For example, org.sqlite.JDBC.
  • CacheConnection: The connection string to be passed to the cache provider. For example, jdbc:sqlite:C:/users/username/documents/fedexcache.db

/etc/odbc.ini または$HOME/.odbc.ini

[CData FedEx Source] Driver = CData ODBC Driver for FedEx Description = My Description Server = 'https://gatewaybeta.fedex.com:443/xml' DeveloperKey = 'alsdkfjpqoewiru' Password = 'zxczxqqtyiuowkdlkn' AccountNumber = '110371337' MeterNumber = '240134349' PrintLabelLocation = 'C:/users/username/documents/mylabels' CacheProvider = 'org.sqlite.JDBC' CacheConnection = 'jdbc:sqlite:C:/users/username/documents/fedexcache.db'

これらの構成ファイルの使用に関する具体的な情報については、、ヘルプドキュメントを参照してください。

以下のステップに従ってpyodbc をインストールし、Python オブジェクトを介してFedEx へのアクセスを開始できます。

pyodbc のインストール

pip ユーティリティを使用してモジュールをインストールできます。

pip install pyodbc

必ず以下のコードでモジュールをインポートしてください。

import pyodbc

Python でのFedEx データへの接続

これで、ODBC 接続文字列またはDSN で接続できます。以下は、接続文字列の構文です。

cnxn = pyodbc.connect('DRIVER={CData ODBC Driver for FedEx};Server='https://gatewaybeta.fedex.com:443/xml';DeveloperKey='alsdkfjpqoewiru';Password='zxczxqqtyiuowkdlkn';AccountNumber='110371337';MeterNumber='240134349'; PrintLabelLocation='C:/users/username/documents/mylabels';CacheProvider='org.sqlite.JDBC';CacheConnection='jdbc:sqlite:C:/users/username/documents/fedexcache.db';')

以下は、DSN の構文です。

cnxn = pyodbc.connect('DSN=CData FedEx Sys;')

FedEx へのSQL の実行

Cursor をインスタンス化し、Cursor クラスのexecute メソッドを使用してSQL ステートメントを実行します。

cursor = cnxn.cursor()

選択

fetchallfetchone、およびfetchmany を使用し、SELECT ステートメントから返されたRows を取得できます。

import pyodbc cursor = cnxn.cursor() cnxn = pyodbc.connect('DSN=CData FedEx Source;User=MyUser;Password=MyPassword') cursor.execute("SELECT FirstName, Phone FROM Senders WHERE SenderID = 'ab26f704-5edf-4a9f-9e4c-25'") rows = cursor.fetchall() for row in rows: print(row.FirstName, row.Phone)

パラメータ化されたクエリをシーケンスまたは因数リストで提供できます。

cursor.execute( "SELECT FirstName, Phone FROM Senders WHERE SenderID = ?", 'ab26f704-5edf-4a9f-9e4c-25',1)

挿入

INSERT コマンドもexecute メソッドを使用します。ただし、挿入後に変更が失われないためにcommit メソッドを呼び出す必要があります。

cursor.execute("INSERT INTO Senders (SenderID) VALUES ('ab26f704-5edf-4a9f-9e4c-25')") cnxn.commit()

更新と削除

挿入の場合と同様に、更新または削除の場合でも、execute を呼び出した後、commit を呼び出す必要があります。

cursor.execute("UPDATE Senders SET SenderID = 'ab26f704-5edf-4a9f-9e4c-25'") cnxn.commit()

メタデータの発見

getinfo メソッドを使用してデータソースやドライバーの機能に関する情報などのデータを取得できます。getinfo メソッドは、入力をODBC SQLGetInfo メソッドに渡します。

cnxn.getinfo(pyodbc.SQL_DATA_SOURCE_NAME)

CData ODBC Driver for FedEx を使用してFedEx に接続できるLinux/UNIX 環境で、Python アプリを構築することができるようになりました。