Pythonでpsycopg2を使用しPostgreSQLテーブルを作成する

Pythonでpsycopg2を使用しPostgreSQLテーブルを作成してみます。

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

■Python

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

■psycopg2を使用しPostgreSQLテーブルを作成する

psycopg2を使用しPostgreSQLテーブルを作成しますが、PostgreSQLのインストールは前回行っていますので、インストール直後に作成されているデータベースである「postgres」に新しいテーブルを作成してみます。

インストール直後後、確認のために、ローカルホスト内の「postgres」というデータベース(データベース名)を確認。

■コード

import psycopg2
from psycopg2 import Error, connect

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

    cursor = connection.cursor()

    create_teble_query = '''CREATE TABLE test(
    ID INTEGER,
    NAME VARCHAR(10)
    );'''

    cursor.execute(create_teble_query)
    connection.commit()
    print("PostgreSQLでテーブルが正常に作成されました")

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変数に格納します。

格納後、接続したデータベースで操作を行いますので、create_teble_query変数を定義し、テーブルを作成するためのクエリ、コマンドを記述し、格納します。今回は「test」というテーブルを作成してみます。

その後、cursor.execute()を使用し、接続したデータベースの操作(クエリまたはコマンド)を実行します。関数の括弧内には、create_teble_query変数を渡します。これで設定したクエリ、コマンドで操作が実行され、テーブルが作成されます。作成後、commit()で、PostgreSQLデータベースインスタンスへの接続処理を確定させます。

確定後、print()関数で「正常に作成されました」という文字列を出力します。

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

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

■実行・検証

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

実行してみると、PostgreSQLデータベースへの接続が行われ、今回指定したクエリ、コマンドでデータベース操作が実行し、print()関数で「正常に作成されました」と出力されました。

出力後、SQL Shellで今回指定したデータベースにテーブルが作成されているのか確認すると、「test」というテーブルが作成されていることが確認できました。

コメント

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