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」というテーブルが作成されていることが確認できました。
コメント