Nova SQL Dump ๐ข๏ธ
It logs what actually ran, not what you clicked
- status
Most "log your ComfyUI run to a database" nodes have the same flaw: they snapshot the widget values at the moment you press Queue. That's before the run. It's the inputs you intended, not the ones that were used, and if the run errors or you cancel it, you've logged a generation that never happened. Anyone who's tried to analyse a few hundred runs from a table full of phantom rows knows how useless that is.
Nova SQL Dump ๐ข๏ธ logs against ComfyUI's real execution lifecycle instead. A frontend script captures the snapshot when a run actually starts, and then writes one row per lifecycle event:
flow_start- the run began, with the values actually usedflow_end- finished successfullyflow_cancelled- interruptedflow_exception- errored
One row per event into a canvas_snapshots table, and each row carries flow_name, the label you type on the node, so runs are trivial to group and query afterwards. WHERE flow_name = 'metal_album_02' gets you the whole session, including the two that blew up.
Inputs and output
- enable_storage - a real toggle, so the node can sit in a saved workflow switched off. It's on by default, which is the right default for a node you'd otherwise have to delete and re-add.
- flow_name - label for this flow. Type something meaningful; this is the column your queries will actually use.
- host, user, password, database - MySQL/MariaDB connection details. Defaults are
127.0.0.1,root, empty,comfyui_db. The database and table are created if they don't exist, and theflow_state/flow_namecolumns get added to older tables rather than erroring. - Output: status, a string you can wire into Nova Console to confirm what happened.
Treat the credentials as what they are - a plaintext host, user and password sitting in a workflow file. Local MySQL, throwaway user, no reuse of anything you care about. Workflows get shared.
The dependency gotcha, handled
This node needs pymysql, which ComfyUI does not ship. The pack declares it in pyproject.toml so the registry and Manager install paths pull it in. But the very common path - git clone straight into custom_nodes - runs no pip at all, so here's the case you should know about:
The import is lazy and guarded. If pymysql is missing you get a clean error at the point of use, in words, telling you to pip install pymysql. You do not get an ImportError in __init__.py that takes all 25 nodes off the menu over one optional database feature. The author's own comment in the source says the machine it was written on had pymysql - which is exactly why an unguarded import would never have shown up in testing. Same discipline is applied to mutagen for the tag nodes and scipy for the LUFS measurement.
<venv>/bin/python -m pip install pymysql
Install
ComfyUI Manager โ Nova Audio Player โ install โ restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/NovaFemme/ComfyUI-NovaAudioPlayer.git
Under โถ๏ธ Nova Audio โ ๐ ๏ธ Utility & IO. No models, no downloads, one small pure-Python package.
Who this is actually for
If you're generating a song a month, a text log is fine. If you're producing music at volume and want to answer questions like "which sampler settings correlate with the takes I kept", a table of runs with real lifecycle state is the only way to do it without lying to yourself about your data. Pair it with Nova Master Report Viewer ๐ and the player's panel_info output - both are built on the same principle this node is: the number that gets logged is computed once, from the audio, and never re-derived from what's on screen.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| enable_storage | BOOLEAN | true | โ |
| flow_name | STRING | โ | |
| host | STRING | 127.0.0.1 | โ |
| user | STRING | root | โ |
| password | STRING | โ | |
| database | STRING | comfyui_db | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| status | STRING | โ |