Supabase client for Python.
Project Links
Meta
Author: Joel Lee, Leon Fedden, Daniel Reinón García, Leynier Gutiérrez González, Anand, Andrew Smith
Maintainer: Leonardo Santiago
Requires Python: >=3.9
Classifiers
Programming Language
- Python :: 3
Operating System
- OS Independent
supabase-py
Python client for Supabase
- Documentation: supabase.com/docs
- Usage:
PyPI installation
Install the package (for Python >= 3.9):
# with pip
pip install supabase
# with uv
uv add supabase
# with conda
conda install -c conda-forge supabase
Usage
Set your Supabase environment variables in a dotenv file, or using the shell:
export SUPABASE_URL="my-url-to-my-awesome-supabase-instance"
export SUPABASE_KEY="my-supa-dupa-secret-supabase-api-key"
Init client:
import os
from supabase import create_client, Client
url: str = os.environ.get("SUPABASE_URL")
key: str = os.environ.get("SUPABASE_KEY")
supabase: Client = create_client(url, key)
Use the supabase client to interface with your database.
Sign-up
user = supabase.auth.sign_up({ "email": users_email, "password": users_password })
Sign-in
user = supabase.auth.sign_in_with_password({ "email": users_email, "password": users_password })
Insert Data
data = supabase.table("countries").insert({"name":"Germany"}).execute()
# Assert we pulled real data.
assert len(data.data) > 0
Select Data
data = supabase.table("countries").select("*").eq("country", "IL").execute()
# Assert we pulled real data.
assert len(data.data) > 0
Update Data
data = supabase.table("countries").update({"country": "Indonesia", "capital_city": "Jakarta"}).eq("id", 1).execute()
Update data with duplicate keys
country = {
"country": "United Kingdom",
"capital_city": "London" # This was missing when it was added
}
data = supabase.table("countries").upsert(country).execute()
assert len(data.data) > 0
Delete Data
data = supabase.table("countries").delete().eq("id", 1).execute()
Call Edge Functions
def test_func():
try:
resp = supabase.functions.invoke("hello-world", invoke_options={'body':{}})
return resp
except (FunctionsRelayError, FunctionsHttpError) as exception:
err = exception.to_dict()
print(err.get("message"))
Download a file from Storage
bucket_name: str = "photos"
data = supabase.storage.from_(bucket_name).download("photo1.png")
Upload a file
bucket_name: str = "photos"
new_file = getUserFile()
data = supabase.storage.from_(bucket_name).upload("/user1/profile.png", new_file)
Remove a file
bucket_name: str = "photos"
data = supabase.storage.from_(bucket_name).remove(["old_photo.png", "image5.jpg"])
List all files
bucket_name: str = "charts"
data = supabase.storage.from_(bucket_name).list()
Move and rename files
bucket_name: str = "charts"
old_file_path: str = "generic/graph1.png"
new_file_path: str = "important/revenue.png"
data = supabase.storage.from_(bucket_name).move(old_file_path, new_file_path)
Important: Proper Client Shutdown
To ensure the Supabase client terminates correctly and to prevent resource leaks, you must explicitly call:
client.auth.sign_out()
2.28.3
Mar 20, 2026
2.28.2
Mar 13, 2026
2.28.1
Mar 13, 2026
2.28.0
Feb 10, 2026
2.27.3
Feb 03, 2026
2.27.2
Jan 14, 2026
2.27.1
Jan 06, 2026
2.27.0
Dec 16, 2025
2.26.0
Dec 15, 2025
2.25.1
Dec 10, 2025
2.25.0
Dec 03, 2025
2.24.0
Nov 07, 2025
2.23.3
Nov 06, 2025
2.23.2
Nov 03, 2025
2.23.1
Nov 03, 2025
2.23.0
Oct 31, 2025
2.22.4
Oct 30, 2025
2.22.3
Oct 28, 2025
2.22.2
Oct 24, 2025
2.22.1
Oct 21, 2025
2.22.0
Oct 08, 2025
2.21.1
Oct 03, 2025
2.21.0
Oct 03, 2025
2.20.0
Sep 22, 2025
2.19.0
Sep 17, 2025
2.18.1
Aug 12, 2025
2.18.0
Aug 05, 2025
2.17.0
Jul 17, 2025
2.16.0
Jun 23, 2025
2.15.3
Jun 10, 2025
2.15.2
May 25, 2025
2.15.1
Apr 28, 2025
2.15.0
Mar 26, 2025
2.14.0
Mar 21, 2025
2.13.0
Feb 04, 2025
2.12.0
Jan 24, 2025
2.11.0
Dec 30, 2024
2.10.0
Nov 05, 2024
2.9.1
Oct 18, 2024
2.9.0
Oct 06, 2024
2.8.1
Sep 30, 2024
2.8.0
Sep 29, 2024
2.7.4
Sep 02, 2024
2.7.3
Aug 22, 2024
2.7.2
Aug 19, 2024
2.7.1
Aug 16, 2024
2.7.0
Aug 16, 2024
2.6.0
Jul 24, 2024
2.5.3
Jul 16, 2024
2.5.2
Jul 16, 2024
2.5.1
Jun 11, 2024
2.5.0
May 28, 2024
2.4.6
May 22, 2024
2.4.5
May 01, 2024
2.4.4
May 01, 2024
2.4.3
Apr 17, 2024
2.4.2
Apr 14, 2024
2.4.1
Mar 26, 2024
2.4.0
Feb 28, 2024
2.3.8
Feb 28, 2024
2.3.7
Feb 26, 2024
2.3.6
Feb 22, 2024
2.3.5
Feb 15, 2024
2.3.4
Jan 15, 2024
2.3.3
Jan 11, 2024
2.3.2
Jan 10, 2024
2.3.1
Jan 05, 2024
2.3.0
Dec 15, 2023
2.2.1
Dec 10, 2023
2.2.0
Dec 01, 2023
2.1.1
Nov 30, 2023
2.1.0
Nov 23, 2023
2.0.3
Nov 01, 2023
2.0.2
Nov 01, 2023
2.0.1
Oct 31, 2023
2.0.0
Oct 29, 2023
1.2.0
Oct 04, 2023
1.1.1
Oct 02, 2023
1.1.0
Sep 29, 2023
1.0.6
Sep 28, 2023
1.0.5
Sep 28, 2023
1.0.4
Aug 04, 2023
1.0.3
Apr 03, 2023
1.0.2
Mar 09, 2023
1.0.1
Feb 26, 2023
1.0.0
Feb 05, 2023
0.7.1
Oct 11, 2022
0.6.0
Oct 07, 2022
0.5.8
Jun 27, 2022
0.5.7
Jun 08, 2022
0.5.6
May 06, 2022
0.5.5
May 01, 2022
0.5.4
Apr 30, 2022
0.5.3
Mar 08, 2022
0.5.2
Mar 08, 2022
0.5.1
Feb 25, 2022
0.5.0
Feb 24, 2022
0.4.0
Feb 04, 2022
0.3.2
Jan 22, 2022
0.3.1
Jan 22, 2022
0.3.0
Jan 17, 2022
0.2.0
Jan 03, 2022
0.1.1
Jan 01, 2022
0.0.3
Oct 04, 2021