このトピックでは、Python DB-API を使用して LindormTable に基づくアプリケーションを開発する方法について説明し、例を示します。
前提条件
Python 3.7 以降がインストールされていること。
クライアントの IP アドレスが Lindorm ホワイトリスト に追加されていること。
制限事項
Python DB-API は、Lindorm Serverless インスタンスの LindormTable への接続には使用できません。
手順
pip install phoenixdbコマンドを実行して phoenixdb をインストールします。次のサンプルコマンドは、phoenixdb V1.2.0 をインストールする方法を示しています。pip install phoenixdb==1.2.0アクセスするデータベースの名前、データベースへのアクセスに使用するユーザー名とパスワードなど、データベースへの接続を確立するために必要なパラメーターを指定します。
connect_kw_args = {'lindorm_user': '<userName>', 'lindorm_password': '<userPassword>', 'database': '<database>'}パラメーターの説明
パラメーター
説明
lindorm_user
Lindorm インスタンスへの接続に使用されるユーザー名とパスワード。
パスワードを忘れた場合は、LindormTable のクラスター管理システムで パスワードを変更 できます。
lindorm_password
database
アクセスするデータベースの名前。アクセス権限のある既存のデータベースに接続できます。
データベースを指定しない場合、デフォルトのデータベースに接続されます。
database_url および connect_kw_args パラメーターを指定して、データベースへの接続を確立します。
database_url = '<lindorm_sql_url>' connection = phoenixdb.connect(database_url, autocommit=True, **connect_kw_args)パラメーターの説明
パラメーター
説明
database_url
SQL を使用して LindormTable にアクセスするために使用されるエンドポイント。エンドポイントの取得方法の詳細については、「エンドポイントの表示」をご参照ください。
クライアントが Lindorm インスタンスと同じ仮想プライベートネットワーク (VPC) 内にある Elastic Compute Service (ECS) インスタンスにデプロイされている場合は、VPC エンドポイントを使用して LindormTable にアクセスできます。それ以外の場合は、LindormTable のパブリックエンドポイントを有効にしてから、パブリックエンドポイントを使用して LindormTable にアクセスします。
このパラメーターをエンドポイントに設定する場合、Lindorm コンソールから取得したエンドポイントから
httpより前の文字列を削除します。例:
database_url = 'http://ld-bp10m54739kg9****-proxy-lindorm.lindorm.rds.aliyuncs.com:30060'autocommit
コマンドを自動的にコミットするかどうかを指定します。このパラメーターは True に設定する必要があります。
**connect_kw_args
ステップ 2 で指定した connect_kw_args のパラメーター設定。この設定は、データベースへの接続を確立するために phoenixdb.connect() メソッドに渡されます。
データベースに接続した後、データベースで DDL および DML 操作を実行できます。次のコードは、DDL および DML 操作を実行する方法の例を示しています。
with connection.cursor() as statement: # テーブルを作成します。 sql_create_table = "create table if not exists test_python(c1 integer, c2 integer, primary key(c1))" print(sql_create_table) statement.execute(sql_create_table) # 1 行のデータを挿入します。 sql_upsert = "upsert into test_python(c1, c2) values(1,1)" print(sql_upsert) statement.execute(sql_upsert) # 複数行のデータを挿入します。 with connection.cursor() as stat: sql_upsert = "upsert into test_python(c1, c2) values(?,?)" print(sql_upsert) stat.executemany(sql_upsert, [(2, 2), (3, 3)]) # データを削除します。 sql_delete = "delete from test_python where c1=2" print(sql_delete) statement.execute(sql_delete) # テーブル内のデータを変更します。 sql_update = "upsert into test_python(c1, c2) values(1,10)" print(sql_update) statement.execute(sql_update) # データをクエリします。 sql_select = "select * from test_python" print(sql_select) statement.execute(sql_select) rows = statement.fetchall() print(rows) # テーブルを無効にします。インスタンスの LindormTable のバージョンが 2.2.16 より後で 2.4.1 より前の場合、テーブルを削除する前にテーブルを無効にする必要があります。 sql_offline_table = "offline table test_python" print(sql_offline_table) statement.execute(sql_offline_table) # テーブルを削除します。 sql_drop_table = "drop table if exists test_python" print(sql_drop_table) statement.execute(sql_drop_table) # データベースへの接続を閉じます。 connection.close()説明完全なサンプルコードについては、「Python の例」をご参照ください。
リファレンス
詳細については、「LindormTable の SQL リファレンス」をご参照ください。