Pythonでpsycopg2を使用しPostgreSQLデータベースに接続する

Pythonでpsycopg2を使用しPostgreSQLデータベースに接続してみます。

今回は、psycopg2モジュールを使用します。psycopg2はPythonの標準ライブラリ、モジュールではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■psycopg2を使用しPostgreSQLデータベースに接続する

psycopg2を使用しPostgreSQLデータベースに接続しますが、PostgreSQLのインストールは前回行っていますので、今回は、インストール直後にデータベースに接続する形になります。

インストール直後後に、データベースの一覧を出力してみましたが、今回はローカルホスト内の「postgres」というデータベース(データベース名)に接続を試みます。

■コード

import psycopg2
from psycopg2 import Error, connect

try:
    connection = psycopg2.connect(user="postgres",password="パスワード",host="localhost",port="5432",database="postgres")

    cursor = connection.cursor()

    print("PostgreSQLサーバの情報")
    print(connection.get_dsn_parameters(),"\n")

    cursor.execute("SELECT version();")

    record = cursor.fetchone()

    print("あなたは",record,"に接続されています\n")

except(Exception, Error) as error:
    print("PostgreSQLへの接続時のエラーが発生しました",error)
finally:
    if(connection):
        cursor.close()
        connection.close()
        print("PostgreSQLの接続が切断されました。")

インポートでpsycopg2を呼び出します。呼び出した後に、例外処理(try/except/finally)を使用し、connection変数を定義し、その中でpsycopg2.connect()関数を使用し、PostgreSQLデータベースインスタンスへの接続を処理します。この際にPostgreSQLデータベースのデータベース名やパスワード、ホスト名などが必要になります。これらの情報をpsycopg2.connect()関数の括弧内の引数,パラメーターとして渡します。

接続が行われた後に、connection.cursor()関数で、データベース操作を行うカーソルを作成し、cursor変数に格納します。さらに、接続が完了した後に、get_dsn_parameters()でPostgreSQLサーバの情報を、print()関数で出力します。

また、cursor.execute()を使用し、接続したデータベースの操作(クエリまたはコマンド)を実行します。関数の括弧内には、操作するためのクエリまたはコマンドを渡します。今回は、「SELECT version();」とし、PostgreSQLのバージョンを確認します。

cursor.execute()を使用後、レコードを取得するため、fetchone()を使用し、取得したレコードをrecord変数に格納し、print()関数で出力します。

except節では、接続を行いErrorになった場合の処理を記述します。今回は、Errorが発生した場合に、エラーの内容と「エラーが発生しました」という文字列をprint()関数で出力されます。

finally節では、終了時に必ず実行される処理を記述します。cursor.close()関数でcursor変数に格納したデータベース操作を行うカーソルを閉じます。connection.close()関数でPostgreSQLデータベースインスタンスへの接続を閉じます。最後に、「接続が切断されました」という文字列をprint()関数で出力します。

■実行・検証

このスクリプトを「db_test1.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、前回インストールしたPostgreSQLにデフォルトで作成されていたデータベースである「postgres」への接続が成功し、データベースの情報を出力させることができました。

コメント

タイトルとURLをコピーしました