この記事の目次
Psycopg2とは
![](https://www.pakutaso.com/shared/img/thumb/YAMA_DSC2546.jpg)
Psycopg2の特徴、対応バージョンなど
Psycopg 2はDB API2.0準拠のPostgreSQLドライバーで、C言語を中心として実装されているlibpqラッパーです。拡張性にすぐれ、カスタマイズがしやすいツールです。 <Psycopg 2の機能> ・クライアント側とサーバー側のカーソル ・非同期通信と通知 ・COPY サポート(COPY TO/COPY FROM) ・UnicodeとPython3の両方に対応 <Psycopg 2の対応バージョン> ・Python(ver. 2.7) ・Python 3 (ver.3.4 から 3.8 まで) ・PostgreSQL サーバー(ver. 2.77.4 から 12 まで) ・PostgreSQL クライアント ライブラリ(ver. 9.1 以降)Psycopg2の使用許諾
フリーソフトウェアであるPsycopg2は、特定の目的や用途への適合性についていかなる保証もないことを、あらかじめ理解して利用しなければなりません。 Psycopg2の使用にあたっては、GNU劣等一般公衆利用許諾契約書(LGPL)のバージョン3以降の条件に基づいて、再配布または変更が許諾されています。 利用する前に必ず契約書の内容を確認しましょう。Psycopg2を使ってSalesforceとHerokuのシームレスな同期を実現!
![](https://www.pakutaso.com/shared/img/thumb/macbook1983.jpg)
HerokuPostgres とPsycopg2
Heroku Postgresは、Heroku社が提供するマネージドSQLデータベースサービスです。HerokuPostgresデータベースにアクセスする際、利用できるPostgreSQLドライバーのひとつがPsycopg2です。 Heroku Connect では、Herokuがサポートしている言語、フレームワークなどの任意のツールを使用できます。SalesforceとHerokuの同期
Heroku Postgresのデータが変更されると、読み取り/書き込みとマークされたマッピングにしたがって、SOAPもしくはBulk API を使用して Salesforce に送信されます。 ・読み取り/書き込みテーブルが更新される。 ・_trigger_log (トリガーログ) テーブルへの挿入で変更を発見する。 ・Postgres トリガーが発動する。 この動作はすべての読み取り/書き込みデータテーブル間で共有され、Heroku Connect は、接続ごとにすべての変更を1つのプロセスで処理します。このプロセスは、マッピングされたオブジェクトに対するSalesforceからの読み取りとは別に、並行して実行されます。各処理のHerokuConnectの動作は?
マッピングされた読み取り/書き込みテーブルで、それぞれの処理が発生するたびに、以下の処理が実行されます。 <INSERT> ・Salesforce への INSERT が成功する。 ・新しく作成されたレコードの sfid を、Postgres 内の起点のテーブルに書き戻す。 <UPDATE> ・変更の前後で行の値を比較し、変更された値のみを記録する。 <DELETE> ・削除のみを記録する。Psycopg2の使い方とインストールの条件
![](https://www.pakutaso.com/shared/img/thumb/PAK_MT9V9A6980_TP_V.jpg)
PostgreSQLへの接続
Psycopg2 は接続したいデータベースを、文字列で指定するだけで接続できます。 環境変数 DATABASE_URL のフォーマット postgresql://{username}:{password}@{hostname}:{port}/{database}import os
import psycopg2
DATABASE_URL = os.environ['DATABASE_URL']
conn = psycopg2.connect(DATABASE_URL, sslmode='require')
クエリの実行
Psycopg2でのクエリの実行は、コネクションオブジェクトからカーソルオブジェクトを取得して行います。INSERT、DELETEと、SELECTでは処理が異なります。INSERT、DELETEの場合
INSERT、DELETEの処理は共通で、”実行したいSQL文”に、INSERT、DELETEのSQL文のいずれかを入れてください。 ①connect関数:DBと接続されたconnectionインスタンスを生成する ②connectionインスタンスのcursorメソッド:SQL文を実行できるcursorインスタンスを生成する ③execute:”実行したいSQL文” ④commit:DBに反映させる ⑤close: 最後に接続を切るconn = psycopg2.connect(DATABASE_URL)
cursor = conn.cursor()
cursor.execute()
cursor.commit()
conn.close()
SELECTの場合
①~③まではINSERT、DELETEと同じですが、SELECTの場合はexecuteの後で、fetchone、fetchall、fetchmanyのいずれかで取得します。 最後に必ずCloseを入れてください。その理由は次項で説明します。conn = psycopg2.connect(DATABASE_URL)
cursor.execute()
data = cursor.fetchall()
cursor.close()
conn.close()
要注意!closeを忘れるとエラーの無限ループの可能性
Psycopgでは、SQL文が実行されると、トランザクションが作成され、connectionクラスで処理されます。cursorがcloseされれば、トランザクションは終了します。 あるトランザクションをcloseする前に別のSQL文が実行されると、そのSQL文は実行中のトランザクションで実行されます。つまり、トランザクションでcloseされない状態で、SQL文が実行され続けることになります。 そこでエラーが発生すると、そのトランザクションが終了されるまで、エラーがトラップされ続け、次のSQL文を実行できなくなります。 cursorはcommitされると、自動的にcloseされますので、closeかcommitを必ず入れましょう。Psycopg2インストールの条件
Psycopgが動作するには以下のツールやファイルが必要です。インストールする前に確認してください。 ・C コンパイラ ・Python ヘッダー ファイル ・libpq ヘッダー ファイル ・pg_configプログラムPsycopg2を使いこなしてSalesforceのインテグレーションを拡充する
![](https://www.pakutaso.com/shared/img/thumb/TKL0614_1.jpg)
この記事の監修者・著者
![株式会社オープンアップITエンジニア](https://tenshoku-careerchange.jp/wp-content/uploads/2023/07/fzxADbr-_400x400-1-150x150.jpg)
-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
最新の投稿
- 2024年3月26日キャリア・転職保安職(自衛官・警察・消防官など)に向いている人の性格・特徴ランキング【現役保安職(自衛官・警察・消防官など)36人が回答】
- 2024年3月26日キャリア・転職保安職(自衛官・警察・消防官など)に必要なスキルランキング&スキルアップの方法とは?【現役保安職(自衛官・警察・消防官など)36人が回答】
- 2024年3月26日キャリア・転職クリエイター職(ライター・デザイナー・編集)に向いている人の性格・特徴ランキング【現役クリエイター職(ライター・デザイナー・編集)64人が回答】
- 2024年3月26日キャリア・転職クリエイター職(ライター・デザイナー・編集)に必要なスキルランキング&スキルアップの方法とは?【現役クリエイター職(ライター・デザイナー・編集)64人が回答】