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インスタンスのテーブル内のデータを取得し、取得したデータを出力させることができました。
コメント