IntegrationsJupyter

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

SymbolDescription
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