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」への接続が成功し、データベースの情報を出力させることができました。
コメント