Pythonのpsycopg2を用いてElephantSQLのインスタンスにテーブルを作成する

スポンサーリンク

Pythonのpsycopg2を用いてElephantSQLのインスタンスにテーブルを作成してみます。

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

■Python

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

■ElephantSQLのインスタンスのサーバー情報を取得する

まず、ElephantSQLのインスタンスのサーバー情報を取得しますので、ElephantSQL(https://customer.elephantsql.com/login)のログインページにアクセスし、アクセス後新しいインスタンスを作成します。

作成後、ElephantSQLの「instance」ページから作成したインスタンスの「Name」をクリックします。今回は事前に「test_db」というインスタンスを作成しています。

クリックすると、作成したインスタンスの「Details(詳細)」が表示されます。この「Details(詳細)」内の「URL」の情報をコピーします。ElephantSQLのインスタンスのサーバー情報の取得は完了となります。

■psycopg2を用いてElephantSQLのインスタンスにテーブルを作成する

取得後、psycopg2を用いてElephantSQLのインスタンスにテーブルを作成するスクリプトを書いていきます。

■コード

import psycopg2

conn = psycopg2.connect('postgres://****@*****.db.elephantsql.com/dsppyfom(取得したURL)')

with conn.cursor() as cur:
    sql = '''
            CREATE TABLE test01(
                ID int,
                Name varchar(255),
                Address varchar(255)
            );
    '''
    cur.execute(sql)

conn.commit()

conn.close()

今回はimportを用いてpsycopg2モジュールを呼び出します。その後、connという変数を定義し、その中でpsycopg2.connect()を用います。括弧内に引数,パラメータとして、取得したURLを貼り付けます。これで、サーバーへの接続を確立し、データベースセッションで、新しいオブジェクトを返します。なお、データベースセッションは、1つまたは複数のトランザクションで構成されている。トランザクションは、一連の情報交換と関連する作業、今回の場合はデータベースの更新などである。

その後、conn.cursor()を用いて、データベースセッションから新しいカーソル オブジェクトを返します。返されたカーソルオブジェクトは、with構文を用いて、cur変数とします。次にsqlという変数を定義し、その中でCREATE TABLE文を用いて、test01というテーブルを作成する命令文(クエリ)を記述します。作成するテーブル内のカラム(列)として、「ID」,「Name」,「Address」という3つのカラム(列)を作ります。またそれぞれのカラム(例)にデータを挿入する際の条件もそれぞれ指定します。

記述後、cur.execute()を用いて、SQLステートメント(SQLを使ったデータベースへの命令)を実行します。括弧内には、引数,パラメータとしてsql変数を渡します。ここまででwith構文を用いていますので、SQLステートメントを実行した後に、自動的に閉じる処理が実行されます。

その後、conn.commit()を用いて、保留中のトランザクションをデータベースにコミットさせます(確定させます)。今回の保留中になっているトランザクションは、cur.execute()を用いたSQLステートメント(SQLを使ったデータベースへの命令)の実行処理となります。

コミット(確定)させたことで、データベース内にテーブルが作成されます。最後にconn.close()を用いてサーバーへの接続を閉じます。

■実行・検証

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

実行してみると、今回のスクリプトではprint()を用いてテーブルの作成完了といった文字列の出力は記述していないので、何も出力されません。

何も出力されませんが、ElephantSQLの「instance」ページから作成したインスタンスの「Name」をクリックし、左側メニューから「BROWSER」をクリックすると、「”public”.”test01″」というテーブルが確認できました。

 

コメント

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