Python+psycopg3でPostgreSQLに接続
PythonからPostgreSQLに接続する方法を調査している時の覚書。
環境: Windows10, Python 3.10.2, psycopg 3.0.9
検索するとpsycpg2のサンプルプログラムが多く見つかるけど、今はpsycopg3がメインストリームになっている。
psycopg3をインストール
> pip install psycopg[binary]
psycopg-binaryはPostgreSQLのlibpqをインストールしていない環境でも動作させるためのライブラリ。
PostgreSQLをインストールしたCentOS上は「pip install psycopg」だけでOK
サンプルプログラムは公式サイトを参考にする。
ざっと読んだポイントとしては
- connect()でデータベースのセッション開始
- cursor()でクエリ制御開始
- execute()した後にselectした値を取得するにはcur.fetchone, cur.fetchallを使う
参考: Cursor classes - psycopg 3.1.dev0 documentation - withブロック推奨。withを使うことでwithの終了と同時に自動コミットされる
参考: Transactions management - psycopg 3.1.dev0 documentation - 一発目のcur.execute()でトランザクションを開始する(SELECTでも)
- SELECTしかないwithブロックならautocommit=Trueにすることで不必要なロックを回避できる(psycopgはデフォルトでautocommit=Falseで接続する)
参考: Connection classes - psycopg 3.1.dev0 documentation