Streamlit
Streamlit components for Hotdata — run SQL, display results, and manage databases inside your Streamlit apps.
Install
pip install hotdata-streamlit
Authentication
Pass your API key and workspace ID when creating a client, or load them from environment variables in your app's secrets.
import hotdata_streamlit as hs
client = hs.get_or_create_client(
api_key=st.secrets["HOTDATA_API_KEY"],
workspace_id=st.secrets["HOTDATA_WORKSPACE"],
)
Quickstart
import streamlit as st
import hotdata_streamlit as hs
client = hs.get_or_create_client(
api_key=st.secrets["HOTDATA_API_KEY"],
workspace_id=st.secrets["HOTDATA_WORKSPACE"],
)
sql = st.text_area("SQL", value="SELECT 1 AS ok")
if st.button("Run"):
result = hs.run_sql(sql, client=client)
hs.render_query_result(result)
Run SQL and display results
# Execute SQL and render as a dataframe with row/column counts
result = hs.run_sql("SELECT * FROM orders LIMIT 10", client=client)
hs.render_query_result(result)
For cached read-only queries (avoids re-running on every rerender):
df = hs.cached_query_dataframe(
sql="SELECT * FROM orders LIMIT 100",
_client=client,
)
st.dataframe(df)
Connection status
Show a health badge in your sidebar or header:
hs.render_connection_status(client)
Managed databases
Render a full UI for creating managed databases and loading parquet tables:
hs.render_managed_database_writer(client)
This renders:
- A list of existing managed databases
- A form to create a new database and declare tables
- A form to upload a parquet file into a declared table
You can also call the underlying functions directly:
# List databases as rows for a custom table
rows = hs.managed_databases_rows(client)
st.dataframe(rows)
# Create a database programmatically
db = hs.create_managed_database(client, name="sales", tables=["orders"])
# Upload and load a parquet file from bytes
loaded = hs.load_managed_table_from_bytes(
client,
"db_abc123",
"orders",
parquet_bytes,
)
st.success(f"Loaded {loaded.row_count} rows into {loaded.full_name}")
Reference
| Function | Description |
|---|---|
get_or_create_client(api_key, workspace_id) | Create or reuse a session-scoped client |
run_sql(sql, client, database=None) | Execute SQL, return QueryResult |
cached_query_dataframe(sql, _client) | Cached SQL query returning a pandas DataFrame |
render_query_result(result) | Display query rows and metadata |
render_connection_status(client) | Show workspace health badge |
render_managed_database_writer(client) | Full create + load UI |
render_managed_databases_panel(client) | List managed databases |
managed_databases_rows(client) | Return databases as list[dict] |
create_managed_database(client, name, tables) | Create a managed database |
load_managed_table_from_bytes(client, database, table, bytes) | Upload and load parquet |
See also
- hotdata-streamlit on GitHub
- Streamlit
- Python SDK — core
HotdataClientreference