Supabase client for Python.
Project description
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()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
supabase-2.19.0.tar.gz
(9.3 kB
view details)
Built Distribution
supabase-2.19.0-py3-none-any.whl
(16.3 kB
view details)
File details
Details for the file supabase-2.19.0.tar.gz
.
File metadata
- Download URL: supabase-2.19.0.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
1dae1afe00ced6c4cc94be12be455d75fa0a34e5d14e7901576c22198d9af782
|
|
MD5 |
f62433435fa6c02312aa4a9470cb74e8
|
|
BLAKE2b-256 |
d2895cafe7a91127748e1f09deda3adbdf5b884507bb83bc564c62688475862b
|
File details
Details for the file supabase-2.19.0-py3-none-any.whl
.
File metadata
- Download URL: supabase-2.19.0-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
c0f1cb1f761449cc9d5f8373a6d315eb28d64a4f1e06b3ad4be1646092c2ada8
|
|
MD5 |
7f015480aa79f72f53c473eed33009c0
|
|
BLAKE2b-256 |
8ba4bfafa6989656c14ab8fbabd4ea745a554c85d59f94e849592ad13528d11c
|