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()を用いて出力させることができました。なお、データベース内のテーブルの行には日本語を追加していましたが、日本語であっても、文字化けが発生せずに出力されました。
コメント