11.4 クイック・スタート: Pythonクライアントをモジュールとして使用

このセクションでは、PythonクライアントをPythonアプリケーションでモジュールとして使用する方法について説明します。

リモート・サーバー

このモードで必要なのは、インストールするPythonクライアントのみです。Pythonプログラムでは、次の例に示すように、セッションを作成する前にリモート・サーバーで認証する必要があります。base_urljdbc_urlusernameおよびpasswordの値を、環境の詳細と一致する値で置き換える必要があることに注意してください。

import pypgx
import opg4py
import opg4py.graph_server as graph_server
pgql_conn = opg4py.pgql.get_connection("<username>","<password>", "<jdbc_url>")
pgql_statement = pgql_conn.create_statement()
pgql = """
        CREATE PROPERTY GRAPH bank_graph
        VERTEX TABLES (
          bank_accounts
            LABEL ACCOUNTS
            PROPERTIES (ID, NAME)
        )
        EDGE TABLES (
          bank_txns
            SOURCE KEY (from_acct_id) REFERENCES bank_accounts (ID)
            DESTINATION KEY (to_acct_id) REFERENCES bank_accounts (ID)
            LABEL TRANSFERS
            PROPERTIES (FROM_ACCT_ID, TO_ACCT_ID, AMOUNT, DESCRIPTION)
        ) OPTIONS(PG_VIEW)
"""
pgql_statement.execute(pgql)
instance = graph_server.get_instance("<base_url>", "<username>", "<password>")
session = instance.create_session("my_session")
graph = session.read_graph_by_name('BANK_GRAPH', 'pg_view')
analyst = session.create_analyst()
analyst.pagerank(graph)
rs = graph.query_pgql("SELECT id(x), x.pagerank FROM MATCH (x) LIMIT 5")
rs.print()

実行するには、前述のプログラムをprogram.pyという名前のファイルに保存し、次のコマンドを実行します。

python3 program.py

次の出力が表示されます。

+-------------------------------------------+
| id(x)             | pagerank              |
+-------------------------------------------+
| BANK_ACCOUNTS(2)  | 9.749447313256548E-4  |
| BANK_ACCOUNTS(4)  | 0.004584001759076056  |
| BANK_ACCOUNTS(6)  | 5.358461393401424E-4  |
| BANK_ACCOUNTS(8)  | 0.0013051552434930175 |
| BANK_ACCOUNTS(10) | 0.0015040122009364232 |
+-------------------------------------------+

PGQL結果セットからPandasデータフレームへの変換

さらに、to_pandas()メソッドを使用して、PGQL結果セットをpandas.DataFrameオブジェクトに変換することもできます。これによって、結果セットに対して様々なデータ・フィルタリング操作をより簡単に実行できるようになるとともに、それをラムダ関数で使用することもできます。たとえば、
example_query = (
    "SELECT n.name AS name, n.age AS age "
    "WHERE (n)"
)
result_set = sample_graph.query_pgql(example_query)
result_df = result_set.to_pandas()

result_df['age_bin'] = result_df['age'].apply(lambda x: int(x)/20) # create age bins based on age ranges

ノート:

使用可能なPython APIの完全なセットを確認するには、OPG4PY Python API リファレンスを参照してください。

埋込みサーバー

このモードでは、PythonクライアントとGraph Server RPMパッケージを同じマシンにインストールする必要があります。

import os
os.environ["PGX_CLASSPATH"] = "/opt/oracle/graph/lib/*"
instance = graph_server.get_embedded_instance()
session = instance.create_session("python_pgx_client")
print(session)

実行するには、前述のプログラムをprogram.pyという名前のファイルに保存し、次のコマンドを実行します。

python3 program.py

ログインに成功すると、PGXセッションが作成されたことを示す次のようなメッセージが表示されます:

PgxSession(id: 32fc7037-18f1-4381-ba94-107e5f63aec2, name: python_pgx_client)

ノート:

使用可能なPython APIの完全なセットを確認するには、OPG4PY Python API リファレンスを参照してください。