SQLAlchemy ORM を使用して Python で Act-On のデータ にアクセスする方法

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
SQLAlchemy オブジェクトリレーショナルマッピングを使用して、Act-On のデータ を操作する Python アプリケーションとスクリプトを作成します。

Python の豊富なモジュールエコシステムを活用することで、迅速に作業を開始し、システムを効果的に統合できます。CData Python Connector for Act-On と SQLAlchemy ツールキットを使用して、Act-On に接続された Python アプリケーションやスクリプトを構築できます。この記事では、SQLAlchemy を使用して Act-On のデータ に接続し、クエリ、更新、削除、挿入を実行する方法を説明します。

CData Python Connector は最適化されたデータ処理機能を内蔵しており、Python からリアルタイムの Act-On のデータ を操作する際に比類のないパフォーマンスを提供します。Act-On に対して複雑な SQL クエリを発行すると、CData Connector はフィルタや集計などのサポートされている SQL 操作を直接 Act-On にプッシュし、サポートされていない操作(多くの場合 SQL 関数や JOIN 操作)は組み込みの SQL エンジンを使用してクライアント側で処理します。

Act-On のデータ への接続

Act-On のデータ への接続は、他のリレーショナルデータソースへの接続と同様です。必要な接続プロパティを使用して接続文字列を作成します。この記事では、接続文字列を create_engine 関数のパラメータとして渡します。

ActOn はOAuth 認証標準を利用しています。OAuth を使って認証するには、アプリケーションを作成してOAuthClientIdOAuthClientSecret、およびCallbackURL 接続プロパティを取得する必要があります。

認証方法についての詳細は、ヘルプドキュメントの「認証の使用」を参照してください。

以下の手順に従って SQLAlchemy をインストールし、Python オブジェクトを通じて Act-On にアクセスしてみましょう。

必要なモジュールのインストール

pip ユーティリティを使用して、SQLAlchemy ツールキットと SQLAlchemy ORM パッケージをインストールします。

pip install sqlalchemy
pip install sqlalchemy.orm

適切なモジュールをインポートします。

from sqlalchemy import create_engine, String, Column
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Python での Act-On のデータ のモデリング

これで接続文字列を使用して接続できます。create_engine 関数を使用して、Act-On のデータ を操作するための Engine を作成します。

注意: 接続文字列のプロパティに特殊文字が含まれている場合は、URL エンコードする必要があります。詳細については、SQL Alchemy ドキュメントを参照してください。

engine = create_engine("acton:///?")

Act-On のデータ のマッピングクラスの宣言

接続を確立したら、ORM でモデル化するテーブルのマッピングクラスを宣言します(この記事では、Images テーブルをモデル化します)。sqlalchemy.ext.declarative.declarative_base 関数を使用して、一部またはすべてのフィールド(カラム)を定義した新しいクラスを作成します。

base = declarative_base()
class Images(base):
	__tablename__ = "Images"
	Id = Column(String,primary_key=True)
	Name = Column(String)
	...

Act-On のデータ のクエリ

マッピングクラスを準備したら、セッションオブジェクトを使用してデータソースにクエリを実行できます。Engine をセッションにバインドした後、セッションの query メソッドにマッピングクラスを渡します。

query メソッドの使用

engine = create_engine("acton:///?")
factory = sessionmaker(bind=engine)
session = factory()
for instance in session.query(Images).filter_by(FolderName="New Folder"):
	print("Id: ", instance.Id)
	print("Name: ", instance.Name)
	print("---------")

別の方法として、適切なテーブルオブジェクトと execute メソッドを使用することもできます。以下のコードはアクティブな session で動作します。

execute メソッドの使用

Images_table = Images.metadata.tables["Images"]
for instance in session.execute(Images_table.select().where(Images_table.c.FolderName == "New Folder")):
	print("Id: ", instance.Id)
	print("Name: ", instance.Name)
	print("---------")

JOIN、集計、制限などのより複雑なクエリの例については、拡張機能のヘルプドキュメントを参照してください。

Act-On のデータ の挿入

Act-On のデータ を挿入するには、マッピングクラスのインスタンスを定義し、アクティブな session に追加します。セッションの commit 関数を呼び出して、追加されたすべてのインスタンスを Act-On にプッシュします。

new_rec = Images(Id="placeholder", FolderName="New Folder")
session.add(new_rec)
session.commit()

Act-On のデータ の更新

Act-On のデータ を更新するには、フィルタクエリで目的のレコードを取得します。次に、フィールドの値を変更し、セッションの commit 関数を呼び出して、変更されたレコードを Act-On にプッシュします。

updated_rec = session.query(Images).filter_by(SOME_ID_COLUMN="SOME_ID_VALUE").first()
updated_rec.FolderName = "New Folder"
session.commit()

Act-On のデータ の削除

Act-On のデータ を削除するには、フィルタクエリで目的のレコードを取得します。次に、アクティブな session でレコードを削除し、セッションの commit 関数を呼び出して、指定されたレコード(行)に対して削除操作を実行します。

deleted_rec = session.query(Images).filter_by(SOME_ID_COLUMN="SOME_ID_VALUE").first()
session.delete(deleted_rec)
session.commit()

無料トライアルと詳細情報

CData Python Connector for Act-On の30日間の無料トライアルをダウンロードして、Act-On のデータ に接続する Python アプリとスクリプトの構築を始めましょう。ご質問がありましたら、サポートチームまでお問い合わせください。

はじめる準備はできましたか?

Act-On Connector のコミュニティライセンスをダウンロード:

 ダウンロード

詳細:

Act-On Icon Act-On Python Connector お問い合わせ

Act-On へのデータ連携用のPython Connecotr ライブラリ。 pandas、SQLAlchemy、Dash、petl などの主要なPython ツールにAct-On をシームレスに統合。