Skip to main content

A Streamlit connection component for Supabase.

Reason this release was yanked:

Initialization error

Project description

:handshake: st-supabase-connection

Downloads

A Streamlit connection component to connect Streamlit to Supabase.

:computer: Demo app

Open in Streamlit

:construction: Setup

  1. Install st-supabase-connection
pip install st-supabase-connection
  1. Set the SUPABASE_URL and SUPABASE_KEY Streamlit secrets as described here

[!NOTE]
For local development outside Streamlit, you can also set these as your environment variables (recommended), or pass these to the url and key args of st.experimental_connection() (not recommended).

:pen: Usage

  1. Import
import streamlit as st
from st_supabase_connection import SupabaseConnection
  1. Initialize
supabase = st.experimental_connection(
    name="YOUR_CONNECTION_NAME",
    type=SupabaseConnection,
    url="YOUR_SUPABASE_URL", # not needed if provided as a streamlit secret
    key="YOUR_SUPABASE_KEY", # not needed if provided as a streamlit secret
)

This returns the same Supabase client as Supabase's create_client() method.

  1. Use the client as you as you would with the Supabase Python API

[!WARNING]
Currently only the Supabase Database and Storage methods are supported.

# Database operations
# -------------------

# Simple query
>>> supabase.table('countries').select("*").execute()
APIResponse(data=[{'id': 1, 'name': 'Afghanistan'},
                  {'id': 2, 'name': 'Albania'},
                  {'id': 3, 'name': 'Algeria'}],
            count=None)

# Query with join
>>> supabase.table('users').select('name, teams(name)').execute()
APIResponse(data=[
                  {'name': 'Kiran', 'teams': [{'name': 'Green'}, {'name': 'Blue'}]},
                  {'name': 'Evan', 'teams': [{'name': 'Blue'}]}
                 ],
            count=None)

# Filter through foreign tables
>>> supabase.table('cities').select('name, countries(*)').eq('countries.name', 'Estonia').execute()
APIResponse(data=[{'name': 'Bali', 'countries': None},
                  {'name': 'Munich', 'countries': None}],
            count=None)

# Storage operations
# ------------------

# Create a bucket
>>> supabase.storage.create_bucket("new_bucket")
{'name': 'new_bucket'}

# Download a file
>>> with open("file.txt", "wb+") as f:
>>>   res = supabase.storage.from_("new_bucket").download("file.txt")
>>>   f.write(res)

# Delete a bucket
>>> supabase.storage.delete_bucket("new_bucket")

[!NOTE]
All supported database operations and syntax are mentioned in the postgrest-py API reference.
All supported storage operations and syntax are mentioned in the Supabase Python client API reference.

:star: Explore in Streamlit

Open in Streamlit

🤗 Want to support my work?

Buy Me A Coffee

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

st-supabase-connection-0.0.1.tar.gz (6.1 kB view hashes)

Uploaded Source

Built Distribution

st_supabase_connection-0.0.1-py3-none-any.whl (6.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page