Jupyter
Jupyter helpers for Hotdata — run SQL with %%hotdata magic, display results inline, and manage databases from a notebook.
Install
pip install hotdata-jupyter
Authentication
Set HOTDATA_API_KEY in your environment, or load from a .env file in the notebook:
import hotdata_jupyter as hj
hj.load_default_env_files() # loads .env, .env.local from the project root
Quickstart
Load the extension, then run SQL directly in cells:
import hotdata_jupyter as hj
hj.load_default_env_files()
%load_ext hotdata_jupyter
%%hotdata
SELECT 1 AS ok
SQL magic
Use %%hotdata as a cell magic. An optional database name on the same line scopes the query:
%%hotdata
SELECT * FROM orders LIMIT 10
%%hotdata my_database_id
SELECT * FROM default.public.orders LIMIT 5
Use %hotdata as a line magic for quick one-liners:
%hotdata SELECT COUNT(*) FROM orders
Results are displayed inline as an HTML table.
Run SQL from Python
from hotdata_runtime import from_env
client = from_env()
result = client.execute_sql("SELECT * FROM orders LIMIT 10")
# Display inline
hj.display_query_result(result)
# Or get the markdown string
md = hj.result_markdown(result)
Workspace selection
If you have multiple workspaces, pick one interactively:
ws = hj.workspace_selector_from_env()
client = ws.client
display(ws.ui) # renders a dropdown if multiple workspaces exist
After selecting from the dropdown, ws.client returns a client scoped to the chosen workspace.
Managed databases
# Show existing managed databases as a markdown table
hj.display_managed_databases_panel(client)
# Create a database
db = hj.create_managed_database(
client,
name="sales",
tables=["orders", "customers"],
)
# Load parquet bytes into a table
with open("orders.parquet", "rb") as f:
loaded = hj.load_managed_table_from_bytes(
client,
db.id,
"orders",
f.read(),
)
print(f"Loaded {loaded.row_count} rows → {loaded.full_name}")
Interactive database writer
Render a widget UI to create databases and upload parquet files without writing extra code:
writer = hj.managed_database_writer(client)
writer.display()
Reference
| Symbol | Description |
|---|---|
load_default_env_files() | Load .env / .env.local from cwd |
load_ipython_extension(ipython) | Register %%hotdata / %hotdata magic |
workspace_selector_from_env() | Interactive workspace picker |
display_query_result(result) | Display QueryResult as an HTML table |
result_markdown(result) | QueryResult as a markdown string |
display_managed_databases_panel(client) | List databases as a markdown table |
managed_databases_markdown(client) | Markdown string of managed databases |
create_managed_database(client, name, tables) | Create a managed database |
load_managed_table_from_bytes(client, database, table, bytes) | Upload and load parquet |
managed_database_writer(client) | Return an interactive ManagedDatabaseWriter widget |
See also
- hotdata-jupyter on GitHub
- JupyterLab
- Python SDK — core
HotdataClientreference