In PandasAI
You already have DataFrames, CSVs, or Parquet and want to chat with them.
Comparison
Pick PandasAI if you already have DataFrames, CSVs, or a warehouse and want to chat with them in Python — generating code, charts, and cleaned data. Pick nlqdb if you want the database itself: a Postgres provisioned from English, the compiled SQL shown and validated, and writes diff-previewed — no code to run and nothing to load first.
The same goal, two ways.
> top 10 customers by total revenue this year
In PandasAI
You already have DataFrames, CSVs, or Parquet and want to chat with them.
In your HTML
<nlq-data goal="top 10 customers by total revenue this year"></nlq-data> A chat-with-data question PandasAI answers over a DataFrame or DB you loaded; nlqdb answers it over a Postgres it provisioned, SQL shown.
What's different
| Dimension | nlqdb | PandasAI | Note |
|---|---|---|---|
| Provisions + owns the database (from English) | PandasAI reads data you already loaded — a DataFrame, CSV, or a DB you stood up; it provisions nothing. nlqdb materialises a Postgres from the first English goal. | ||
| Natural-language question → answer over your data | |||
| Compiled SQL shown with every answer | For SQL sources PandasAI generates SQL; for a DataFrame or CSV it generates pandas Python — the artifact shown is code, not always SQL. nlqdb always shows the compiled SQL. | ||
| Generates charts / cleans data / engineers features | PandasAI plots matplotlib figures, cleanses datasets, and generates features. nlqdb returns the tabular answer + the SQL; built-in charting is Phase 2. |
| Dimension | nlqdb | PandasAI | Note |
|---|---|---|---|
| Runs only validated SQL — no arbitrary code execution | PandasAI generates and executes Python — a code-execution surface it sandboxes. nlqdb never runs generated code: it validates NL→SQL fail-closed and runs only that. | ||
| Auto-migration via NL ('add a column for tags') | |||
| Destructive-op diff preview before apply | PandasAI analyses (reads); nlqdb diff-previews writes and DDL before they apply. | ||
| HTML embed element + anonymous try | PandasAI is a Python library; you embed it in your own app or notebook. nlqdb ships an `<nlq-data>` element and an in-browser anonymous try. | ||
| MCP server (agent-callable) | PandasAI is called from Python; it ships no dedicated MCP server. An agent using PandasAI must host a Python process itself. | ||
| Open source / self-hostable |
shipped · partial · not shipped
No sign-in. The anonymous database lasts 72 hours; adopt it with one click if you keep it.
Start with a goal →The error has been recorded. Reload to recover; if it persists, sign out and back in.