Skip to content
Switch branches/tags

Latest commit

This release:

- explicitly catches trying to connect to MySQL without specifiying
  a database to give a more informative error message (PR 108).
- allows listing views in the database summary (PR 104).
- switches the CI pipeline from Travis to GitHub actions (PRs 117 and
- adds a description to the Python package for greater
  discoverability (PR 121).
- Switches from a hybrid Yarn / NPM workflow for building JavaScript
  to one that just uses NPM (PR 116).
- Recognizes contributors in the README (PR 115).

Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Build Latest version released on PyPi


jupyterlab-sql adds a SQL user interface to JupyterLab:

  • explore your tables with a point-and-click interface
  • read and modify your database with custom queries


Installing on JupyterLab 1.x

To install jupyterlab-sql, run the following commands:

pip install jupyterlab_sql
jupyter serverextension enable jupyterlab_sql --py --sys-prefix
jupyter lab build

You will then need to restart any running Jupyter servers.

jupyterlab-sql only works with Python 3.5 and above.

JupyterLab legacy

To install jupyterlab-sql on versions of JupyterLab pre 1.0, run:

pip install jupyterlab_sql==0.2.1
jupyter serverextension enable jupyterlab_sql --py --sys-prefix
jupyter lab build


Starting a new SQL session

There is a SQL icon in the launcher (File > New Launcher):

You can also launch a session from the command palette: search for SQL.

Formulating the connection URL

The connection URL needs to be a valid database URL. Follow the SQLAlchemy guide on database URLs.

Executing statements

Press shift + enter or ctrl + enter while in the main query area to dispatch the statement.

Database support

jupyterlab-sql is tested against SQLite, PostgreSQL, and MySQL databases.

Other databases supported by sqlalchemy may also work.

If you need support for other types of databases, see issue #113.

In-memory SQLite and persistence

The lifetime of a SQLite in-memory database is tied to the lifetime of the Jupyter server. Restarting the Jupyter server will clear any data in your in-memory database.

Issue reporting and contributing

Report issues using the issue tracker.

Contributions are welcome. If you have not developed JupyterLab extensions before, I recommend following this tutorial.


jupyterlab-sql is maintained by Pascal Bugnion (@pbugnion) with contributions from:

jupyterlab-sql is built and maintained by people who give their time (in many cases, their free time) to the project.

I would like to join this list. How can I help?

We are currently looking for contributions of:

  • code: if you are unsure how to start, open an issue or email Pascal Bugnion.
  • additional database support: see issue #113.