スクリプト開発 / コネクターオブジェクト DFF.CONN / PostgreSQL
PostgreSQL コネクター操作オブジェクトは、PostgreSQL を操作するためのメソッドを主に提供します。 このコネクターは以下のデータベースと互換性があります:
- Greenplum Database
- Alibaba Cloud PolarDB for PostgreSQL
- Alibaba Cloud 分析型データベース (ADB) PostgreSQL 版
DFF.CONN(...) のパラメータは以下のとおりです:
| パラメータ | 型 | 必須 / デフォルト値 | 説明 |
|---|---|---|---|
connector_id |
str | 必須 | コネクター ID |
database |
str | None |
データベースを指定 |
.query(...)
SQL文を実行し、list[dict] 形式のクエリ結果を返します。パラメータは以下のとおりです:
| パラメータ | 型 | 必須 / デフォルト値 | 説明 |
|---|---|---|---|
sql |
str | 必須 | SQL文。パラメータプレースホルダを含むことができます。? はエスケープが必要なパラメータを表します。?? はエスケープが不要なパラメータを表します |
sql_params |
list | None |
SQLパラメータ |
| サンプル | |
|---|---|
1 2 3 | |
.non_query(...)
書き込み、更新、削除などのSQL文を実行し、影響を受けた行数を返します。パラメータは .query(...) と同じです。
| サンプル | |
|---|---|
1 2 3 | |
.query(...) と .non_query(...) は、実行が成功すると自動的にトランザクションをコミットします。実行に失敗すると自動的にロールバックし、例外をスローします。
ヘルパーメソッド
| メソッド | 説明 |
|---|---|
.query_raw(sql, sql_params=None) |
DFF.SQL(...) を経由せずに raw クエリSQLを実行します |
.non_query_raw(sql, sql_params=None) |
DFF.SQL(...) を経由せずに raw 非クエリSQLを実行します |
.format_sql(sql, sql_params=None, pretty=False) |
最終的なSQL文字列を生成します。デバッグに適しています |
.tables() |
現在のデータベースのテーブル名の一覧を返します |
.create_sql_builder(raw_sql=None) |
SQL Builderを作成します |
通常の動的SQLでは、.query(...) または .non_query(...) の sql_params を優先して使用してください。SQLが信頼できるコードによって完全に構築されている場合にのみ、raw SQLメソッドを使用してください。
トランザクション
同じトランザクション内で複数のSQLを実行する必要がある場合は、以下のメソッドを使用します:
| メソッド | 説明 |
|---|---|
.start_trans() |
トランザクションを開始し、トランザクション接続オブジェクトを返します |
.trans_query(trans_conn, sql, sql_params=None) |
トランザクション内でクエリを実行し、list[dict] を返します |
.trans_non_query(trans_conn, sql, sql_params=None) |
トランザクション内で非クエリSQLを実行し、影響を受けた行数を返します |
.commit(trans_conn) |
トランザクションをコミットし、トランザクション接続を閉じます |
.rollback(trans_conn) |
トランザクションをロールバックし、トランザクション接続を閉じます |
| サンプル | |
|---|---|
1 2 3 4 | |
トランザクション実行中に例外が発生した場合は、.rollback(trans_conn) を呼び出してください。同じトランザクション接続オブジェクトは、コミットまたはロールバックが完了した後は使用できません。
動的SQL文
query(...) と non_query(...) は、内部で DFF.SQL(...) を使用してSQL文を構築し、複雑な動的SQL文の構築をサポートします。
例えば、WHERE IN (...) の値の数が不定の場合や、INSERT INTO ... VALUES ... によるデータの一括書き込みなどです。
詳細は スクリプト開発 / SQL構築 DFF.SQL を参照してください。