Pythonでsupabase-pyを用いてデータベースからデータの取得する

Pythonでsupabase-pyを用いてデータベースからデータの取得してみます。

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

■Python

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

■新しいプロジェクトの作成とデータベースの作成

今回はFree(無料)でsupabase(https://supabase.com/)にアカウント登録を行い、「test_1」という新しいプロジェクトを作成しています。

新しいプロジェクトを作成するためには、supabaseにログインを行い、「Organizations(組織)」で「New project」ボタンをクリックします。

クリックすると、「Choose Organization」のプルダウンメニューが表示され、「Organization」を選択します。選択後、「Create a new project」というウインドウが表示され、表示後「Organization」を確認し「Name(プロジェクト名)」、「Database Password(データベースパスワード)」を入力し、「Region(地域)」を選択します。「Northeast Asia(Tokyo)」がありますので、日本も選択可能です。

その後、「Pricing Plan(料金プラン)」、今回は「Free tier(無料版)」になっているか確認します。確認後、「Create new project(新規プロジェクトの作成)」ボタンをクリックすると、プロジェクトの作成が開始され、しばらくすると、プロジェクトの作成が完了となります。

作成した後は、プロジェクトを選択します。

選択すると、「Welcome to your new project」と表示されますので、ページ内の「Database」から「Table editor」ボタンをクリックします。

クリックすると、「There are no tables available in this schema(このスキーマで使用できるテーブルはありません。)」と表示されていますので、「Create a new table」ボタンをクリックします。

クリックすると、「Create a new table」のウインドウが表示されますの、データベース内のテーブルの作成、そして、カラムの設定を行ってきます。

カラムを追加する場合は、「Add column」ボタンをクリックすることで追加することができます。今回はテストで作成しているので、上記のようにしました。

テーブルの作成とカラム設定が完了した後は、「Save」ボタンをクリックします。クリックすると、データベース内に新しいテーブルの作成が開始されます。

しばらくすると、「Table editor」が表示され、「Insert row(行の挿入)」ボタンをクリックします。

クリックすると、「Add new row to **」というウインドウが表示されます。ウインドウ内に追加する行の情報を記入していき、「Save」ボタンをクリックします。

クリックすると、テーブルに行が追加されます。今回は上記のような形で行を追加しています。

■APIの取得

追加後、APIの取得を行います。

取得するためには、左側のメニューから「Settings」ボタンをクリックし、「API」をクリックします。クリックすると、APIのページが表示されます。ページ内の「Project API keys」の「anon public」と、「Configuration」の「URL」の情報をコピーします。

■supabase-pyを用いてデータベースからデータの取得する

コピー後、supabase-pyを用いてデータベースからデータの取得するスクリプトを書いていきます。

■コード

from supabase import create_client,Client

url: str = "SUPABASE_URL"
key: str = "SUPABASE_ANON_KEY"

supabase: Client = create_client(url, key)

def find_all_date():
    data = supabase.table("test").select("*").execute()
    return data

result = find_all_date()

print(result)

「from import」でsupabaseのcreate_client,Clientを呼び出します。その後、urlとkeyという変数を定義し、その中に先程コピーした情報を貼り付けます。

貼り付けた後に、supabaseという変数を定義し、「Client = create_client()」を用います。括弧内には、引数,パラメータとしてurlとkey変数を渡します。

その後、def文を用いてfind_all_date()関数を定義します。関数を呼び出した時に、実行される処理としては、今回作成したテーブルを指定し、select(“*”)とexecute()を用いて、テーブル内の行を全て実行する。クエリの実行を行い、実行された結果をreturnとして返すものです。

関数の定義後は、result変数を定義し、その中でfind_all_date()関数を呼び出します。

最後にresult変数内の情報をprint()を用いて出力します。

■実行・検証

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

実行してみると、今回作成したデータベースからデータを取得しprint()を用いて出力させることができました。なお、データベース内のテーブルの行には日本語を追加していましたが、日本語であっても、文字化けが発生せずに出力されました。

コメント

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