PythonでPsycopg3を用いてElephantSQLインスタンスのテーブル内のデータを取得する

スポンサーリンク

PythonでPsycopg3を用いてElephantSQLインスタンスのテーブル内のデータを取得してみます。

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

■Python

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

■ElephantSQLのインスタンスとテーブル内の確認

今回はElephantSQL(https://www.elephantsql.com/)で事前に無料アカウントを取得し、「test_db」というインスタンスを作成した状態となっています。

この状態で、「instance」ページから作成したインスタンスの「Name」をクリックします。

クリック後、左側メニューから「BROWSER」をクリックし、「Previous queries(以前のクエリ)」ボタンをクリックします。クリックすると、プルダウンメニューが表示されますので、今回は「SELECT * FROM “public”.”test01″」をクリックします。なお、今回はインスタンス内に「test01」というテーブルを事前に作成しています。

クリック後、空白欄にクリックしたクエリが表示されます。表示後「Execute(実行する)」ボタンをクリックします。クリックすると、クエリが実行され、テーブル内のデータが表示されました。これでインスタンスとテーブル内の確認は完了となります。

■Psycopg3を用いてElephantSQLインスタンスのテーブル内のデータを取得する

確認後、Psycopg3を用いてElephantSQLインスタンスのテーブル内のデータを取得するスクリプトを書いていきます。

■コード

import psycopg

with psycopg.connect("postgres://dsppyfom:(ElephantSQLインスタンスのURL)") as conn:
    with conn.cursor() as cur:
        cur.execute("SELECT * FROM test01")
        print(cur.fetchone())

今回はimportでpsycopgモジュールを呼び出します。その後にwith構文でpsycopg.connect()を用います。

psycopg.connect()の括弧内には、ElephantSQLの「instance」ページから作成したインスタンスの「Name」をクリックし、表示された「Details」ページの「URL」をコピーして貼り付けます。これで、ElephantSQLの作成したインスタンス(既存のデータベース)への接続が行われ、それをconn変数として扱います。さらにwith構文とconn.cursor()を用います。これで接続されたインスタンスにカーソルオブジェクトを作成し、データベース操作をできるようにします。

データベース操作をできる状態にした後に、cur.execute()を用いて、接続したインスタンス内でクエリまたはコマンドを実行します。今回実行するクエリまたはコマンドは「SELECT * FROM test01」で、インスタンス内のtest01テーブル内のデータ全てを取得するクエリになります。取得したデータは、Pythonのオブジェクトとして扱います。

その後、cur.fetchone()を用いて、テーブルから最初の行のみを取得し、取得したものをprint()で出力してみます。

■実行・検証

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

実行してみると、Psycopg3を用いてElephantSQLインスタンスのテーブル内のデータを取得し、取得したデータを出力させることができました。

コメント

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