Skip to content

marks/streamlit-airtable-connection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Airtable ⚡ Streamlit Connection

This repo includes a st.connection for Airtable which wraps the popular community created and maintained pyAirtable library.

The initial focus of this connector is on read-only operations: specifically listing records and retrieving the schema of an Airtable base. Write-back support may be added in the future.

👀 Live demo w/ AI ✨

A live demo of the code example in examples/explore.py can be accessed on Streamlit Cloud at http://marks-airtable-connection-demo.streamlit.app [demo video]. Provide your Open AI API key to be able to ask questions about the data in the selected Airtable table. The underlying data can be viewed and cloned here.


Minimal example: retrieve all records from base's first table

See examples/ for additional examples

[connections.your_connection_name]
personal_access_token = "patXXX" # REQUIRED
base_id = "appXXX" # optional
table_id = "tblXXX" # optional

ℹ️ The Airtable personal access token you use should have both data.records:read and schema.bases:read scopes to use all functionality of this connector.

import streamlit as st
from streamlit_airtable import AirtableConnection

# Create connection
conn = st.connection("your_connection_name", type=AirtableConnection)

# Retrieve base schema
base_schema = conn.get_base_schema()
with st.expander("Base schema"):
    st.json(base_schema)

# Get the first table's ID
first_table = base_schema["tables"][0]
st.markdown(f"First table ID: `{first_table['id']}` (named `{first_table['name']}`)")

# Retrieve all records for the first table (pyAirtable paginates automatically)
# (Note you can also pass in parameters supported by pyAirtable
# (https://pyairtable.readthedocs.io/en/stable/api.html#parameters) such as as
# max_records, view, sort, and formula into conn.query() like so:
# table_records = conn.query(first_table["id"], max_records=25, view='viwXXX')
table_records = conn.query(table_id=first_table["id"])
st.markdown(f"{len(table_records)} records retrieved")
st.dataframe(table_records)

Steps to replicate the minimal example

  1. Clone/download this repo
  2. Install the connector (pip install -e .)
  3. Move into the examples/ dir (cd examples/)
  4. Copy .streamlit/secrets.toml.example to .streamlit/secrets.toml and provide your own values
  5. Run streamlit run minimal_example.py

Acknowledgements & thank yous