Getting Started

Use Supabase with Python

Learn how to create a Supabase project, add some sample data to your database, and query the data from a Python app.


1

Create a Supabase project

Go to database.new and create a new Supabase project.

Alternatively, you can create a project using the Management API:

1
# First, get your access token from https://supabase.com/dashboard/account/tokens
2
export SUPABASE_ACCESS_TOKEN="your-access-token"
3
4
# List your organizations to get the organization ID
5
curl -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \
6
https://api.supabase.com/v1/organizations
7
8
# Create a new project (replace <org-id> with your organization ID)
9
curl -X POST https://api.supabase.com/v1/projects \
10
-H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \
11
-H "Content-Type: application/json" \
12
-d '{
13
"organization_id": "<org-id>",
14
"name": "My Project",
15
"region": "us-east-1",
16
"db_pass": "<your-secure-password>"
17
}'

When your project is up and running, go to the Table Editor, create a new table and insert some data.

Alternatively, you can run the following snippet in your project's SQL Editor. This will create a instruments table with some sample data.

1
-- Create the table
2
create table instruments (
3
id bigint primary key generated always as identity,
4
name text not null
5
);
6
-- Insert some sample data into the table
7
insert into instruments (name)
8
values
9
('violin'),
10
('viola'),
11
('cello');
12
13
alter table instruments enable row level security;

Make the data in your table publicly readable by adding an RLS policy:

1
create policy "public can read instruments"
2
on public.instruments
3
for select to anon
4
using (true);
2

Create a Python app with Flask

Create a new directory for your Python app and set up a virtual environment.

Terminal
1
mkdir my-app && cd my-app
2
python3 -m venv venv
3
source venv/bin/activate
3

Install Flask and the Supabase client library

The fastest way to get started is to use Flask for the web framework and the supabase-py client library which provides a convenient interface for working with Supabase from a Python app.

Install both packages using pip.

Terminal
1
pip install flask supabase
4

Create Environment Variables file

Create a .env file in your project root and populate it with your Supabase connection variables:

Project URL
Publishable key
Anon key
1
SUPABASE_URL=<SUBSTITUTE_SUPABASE_URL>
2
SUPABASE_PUBLISHABLE_KEY=<SUBSTITUTE_SUPABASE_PUBLISHABLE_KEY>

You can also get the Project URL and key from the project's Connect dialog.

Read the API keys docs for a full explanation of all key types and their uses.

5

Query data from the app

Install the python-dotenv package to load environment variables:

1
pip install python-dotenv

Create an app.py file and add a route that fetches data from your instruments table using the Supabase client.

app.py
1
import os
2
from flask import Flask
3
from supabase import create_client, Client
4
from dotenv import load_dotenv
5
6
load_dotenv()
7
8
app = Flask(__name__)
9
10
supabase: Client = create_client(
11
os.environ.get("SUPABASE_URL"),
12
os.environ.get("SUPABASE_PUBLISHABLE_KEY")
13
)
14
15
@app.route('/')
16
def index():
17
response = supabase.table('instruments').select("*").execute()
18
instruments = response.data
19
20
html = '<h1>Instruments</h1><ul>'
21
for instrument in instruments:
22
html += f'<li>{instrument["name"]}</li>'
23
html += '</ul>'
24
25
return html
26
27
if __name__ == '__main__':
28
app.run(debug=True)
6

Start the app

Run the Flask development server, go to http://localhost:5000 in a browser and you should see the list of instruments.

Terminal
1
python app.py

Next steps