Skip to main content

Streamlit Connection for Airtable.

Project description

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

.streamlit/secrets.toml

[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.

minimal_example.py

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

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-airtable-connection-0.0.4.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

st_airtable_connection-0.0.4-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file st-airtable-connection-0.0.4.tar.gz.

File metadata

  • Download URL: st-airtable-connection-0.0.4.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for st-airtable-connection-0.0.4.tar.gz
Algorithm Hash digest
SHA256 fd9cd40da4a0d6b9ddf66cd1c50479336a2a20d39a6b72ac5d04b56b6ac6c3ea
MD5 0bd0156ca6aff9bbe28934816a560b66
BLAKE2b-256 66804695104f01c2b5d711cddd085b8bd3cecdc84f96d9435767cca18e0ed007

See more details on using hashes here.

File details

Details for the file st_airtable_connection-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for st_airtable_connection-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 90c77626299475be09a43ae4bc888c83c4fda8993308c9e7cc2ec5ed29a95c9e
MD5 b6e0d25990cd25f416f067a5d6ff585a
BLAKE2b-256 36ddde032edbd8a12db1ed4c2bade0953457e075b0366a5d5fac42fbe8987574

See more details on using hashes here.

Supported by

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