Marimo
Marimo widgets for Hotdata — run SQL, browse your schema, and work with managed databases in reactive notebooks.
Install
pip install hotdata-marimo
Authentication
Set HOTDATA_API_KEY in your environment. Optionally set HOTDATA_WORKSPACE to pin a specific workspace (the first available workspace is used if unset).
Quickstart
Because Marimo reruns cells reactively, construct a widget in one cell and read its .ui or .result in the next.
Cell 1
import hotdata_marimo as hm
client = hm.from_env()
editor = hm.sql_editor(client, default_sql="SELECT 1 AS ok")
return editor.ui
Cell 2
return hm.query_result(editor.result)
Click Run on Hotdata after editing SQL.
Workspace selection
If you have multiple workspaces, add an interactive picker:
ws = hm.workspace_selector_from_env()
client = ws.client
return ws.ui
Native SQL cells
Register the Hotdata engine to use Marimo's built-in SQL cells:
hm.register_hotdata_sql_engine()
client = hm.from_env()
_df = mo.sql("SELECT * FROM orders LIMIT 10", engine=client)
Browse your schema
browser = hm.table_browser(client)
return browser.ui
Managed databases
writer = hm.managed_database_writer(client)
return writer.tab_ui
Widgets
| Widget | Code |
|---|---|
| SQL editor | hm.sql_editor(client) |
| Query result | hm.query_result(result) |
| Table browser | hm.table_browser(client) |
| Database writer | hm.managed_database_writer(client) |
| Workspace picker | hm.workspace_selector_from_env() |
| Connection status | hm.connection_status(client) |
| Recent results | hm.recent_results(client) |
| Run history | hm.run_history(client) |
Demo notebook
uv run marimo edit examples/demo.py --no-token