{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# JupyterLite `xeus-sqlite` Kernel Demo\n",
"\n",
"The [`jupyterlite/xeus-sqlite-kernel`](https://github.com/jupyterlite/xeus-sqlite-kernel) wraps the original [`jupyter-xeus/xeus-sqlite`](https://github.com/jupyter-xeus/xeus-sqlite/) kernel for use in JupyterLite.\n",
"\n",
"Original kernel docs can be found [here](https://xeus-sqlite.readthedocs.io/en/latest/).\n",
"\n",
"The kernel provides cell magic for command line database operations, and native execution of SQL code against a connected database."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Creating a Database\n",
"\n",
"Line magic is used to create an in-memory database:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"%CREATE example_db.db"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Currently, there is no ability to:\n",
"\n",
"- save the database to browser storage;\n",
"- export the database;\n",
"- load a database from browser storage;\n",
"- load a database from a URL;\n",
"- load a database from the desktop;\n",
"- connect to a remote sqlite database file."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Create and Populate Tables\n",
"\n",
"Tables are created and populated using SQL:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"CREATE TABLE players (Name STRING, Class STRING, Level INTEGER, Hitpoints INTEGER)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"INSERT INTO players (Name, Class, Level, Hitpoints) VALUES (\"Martin Splitskull\", \"Warrior\", 3, 40)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"trusted": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"rowcount | \n",
"
\n",
"\n",
"1 | \n",
"
\n",
"
"
],
"text/plain": [
"+----------+\n",
"| rowcount |\n",
"+----------+\n",
"| 1 |\n",
"+----------+"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"SELECT COUNT(*) as rowcount FROM players"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Only one command can be executed from within a single code cell:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"INSERT INTO players (Name, Class, Level, Hitpoints) VALUES (\"Sir Wolf\", \"Cleric\", 2, 20);\n",
"\n",
"-- The following will not be inserted\n",
"INSERT INTO players (Name, Class, Level, Hitpoints) VALUES (\"Sylvain, The Grey\", \"Wizard\", 1, 10);"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"trusted": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"Name | \n",
"Level | \n",
"Hitpoints | \n",
"
\n",
"\n",
"Martin Splitskull | \n",
"3 | \n",
"40 | \n",
"
\n",
"\n",
"Sir Wolf | \n",
"2 | \n",
"20 | \n",
"
\n",
"
"
],
"text/plain": [
"+-------------------+-------+-----------+\n",
"| Name | Level | Hitpoints |\n",
"+-------------------+-------+-----------+\n",
"| Martin Splitskull | 3 | 40 |\n",
"+-------------------+-------+-----------+\n",
"| Sir Wolf | 2 | 20 |\n",
"+-------------------+-------+-----------+"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"SELECT Name, Level, Hitpoints FROM players;"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"INSERT INTO players (Name, Class, Level, Hitpoints) VALUES (\"Sylvain, The Grey\", \"Wizard\", 1, 10);"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"trusted": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"Name | \n",
"Level | \n",
"Hitpoints | \n",
"
\n",
"\n",
"Martin Splitskull | \n",
"3 | \n",
"40 | \n",
"
\n",
"\n",
"Sir Wolf | \n",
"2 | \n",
"20 | \n",
"
\n",
"\n",
"Sylvain, The Grey | \n",
"1 | \n",
"10 | \n",
"
\n",
"
"
],
"text/plain": [
"+-------------------+-------+-----------+\n",
"| Name | Level | Hitpoints |\n",
"+-------------------+-------+-----------+\n",
"| Martin Splitskull | 3 | 40 |\n",
"+-------------------+-------+-----------+\n",
"| Sir Wolf | 2 | 20 |\n",
"+-------------------+-------+-----------+\n",
"| Sylvain, The Grey | 1 | 10 |\n",
"+-------------------+-------+-----------+"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"SELECT Name, Level, Hitpoints FROM players;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Querying Tables\n",
"\n",
"A full range of SQL query commands are supported, including aggregation operations:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"SELECT SUM (Level) FROM players"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Grouping also works:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"trusted": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"Level | \n",
"Total Hitpoints | \n",
"
\n",
"\n",
"3 | \n",
"40 | \n",
"
\n",
"\n",
"2 | \n",
"20 | \n",
"
\n",
"\n",
"1 | \n",
"10 | \n",
"
\n",
"
"
],
"text/plain": [
"+-------+-----------------+\n",
"| Level | Total Hitpoints |\n",
"+-------+-----------------+\n",
"| 3 | 40 |\n",
"+-------+-----------------+\n",
"| 2 | 20 |\n",
"+-------+-----------------+\n",
"| 1 | 10 |\n",
"+-------+-----------------+"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"SELECT Level, SUM(Hitpoints) AS `Total Hitpoints`\n",
"FROM players\n",
"GROUP BY Level\n",
"ORDER BY `Total Hitpoints` DESC;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Charting Using Vega\n",
"\n",
"The `jupyter-xeus/xeus-sqlite` kernel also bundles Vega charting components.\n",
"\n",
"Vega charts can be generated by piping the result of a SQL query into a Vega line magic command."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"trusted": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"Level | \n",
"Hitpoints | \n",
"
\n",
"\n",
"3 | \n",
"40 | \n",
"
\n",
"\n",
"2 | \n",
"20 | \n",
"
\n",
"\n",
"1 | \n",
"10 | \n",
"
\n",
"
"
],
"text/plain": [
"+-------+-----------+\n",
"| Level | Hitpoints |\n",
"+-------+-----------+\n",
"| 3 | 40 |\n",
"+-------+-----------+\n",
"| 2 | 20 |\n",
"+-------+-----------+\n",
"| 1 | 10 |\n",
"+-------+-----------+"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/vnd.vegalite.v3+json": {
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"config": {
"axis": {
"grid": true
}
},
"data": {
"values": [
{
"Hitpoints": "name",
"Level": "name"
},
{
"Hitpoints": "40",
"Level": "3"
},
{
"Hitpoints": "20",
"Level": "2"
},
{
"Hitpoints": "10",
"Level": "1"
}
]
},
"encoding": {
"x": {
"field": "Level",
"type": "quantitative"
},
"y": {
"field": "Hitpoints",
"type": "quantitative"
}
},
"height": 200,
"mark": {
"type": "circle"
},
"width": 100
},
"image/png": "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"
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%XVEGA_PLOT\n",
" X_FIELD Level\n",
" Y_FIELD Hitpoints\n",
" MARK circle\n",
" WIDTH 100\n",
" HEIGHT 200\n",
" <>\n",
" SELECT Level, Hitpoints FROM players"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Database Administration\n",
"\n",
"Several line magics are defined to support database administration"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"trusted": true
},
"outputs": [
{
"data": {
"text/plain": [
"The table players exists."
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%TABLE_EXISTS players"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"trusted": true
},
"outputs": [
{
"data": {
"text/plain": [
"The table npcs doesn't exist."
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%TABLE_EXISTS npcs"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"trusted": true
},
"outputs": [
{
"data": {
"text/plain": [
"Magic header string: SQLite format 3\n",
"Page size bytes: 4096\n",
"File format write version: 1\n",
"File format read version: 1\n",
"Reserved space bytes: 0\n",
"Max embedded payload fraction 64\n",
"Min embedded payload fraction: 32\n",
"Leaf payload fraction: 32\n",
"File change counter: 4\n",
"Database size pages: 2\n",
"First freelist trunk page: 0\n",
"Total freelist trunk pages: 0\n",
"Schema cookie: 1\n",
"Schema format number: 4\n",
"Default page cache size bytes: 0\n",
"Largest B tree page number: 0\n",
"Database text encoding: 1\n",
"User version: 0\n",
"Incremental vaccum mode: 0\n",
"Application ID: 0\n",
"Version valid for: 4\n",
"SQLite version: 3032003\n"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%GET_INFO"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Connecting to a Different Database\n",
"\n",
"Creating a new database will connect the kernel to the new database instance."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"%CREATE potato.db "
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"CREATE TABLE potaters(production INTEGER)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"trusted": true
},
"outputs": [],
"source": [
"INSERT INTO potaters (production) VALUES (7)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"trusted": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"production | \n",
"
\n",
"\n",
"7 | \n",
"
\n",
"
"
],
"text/plain": [
"+------------+\n",
"| production |\n",
"+------------+\n",
"| 7 |\n",
"+------------+"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"SELECT * FROM potaters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The original database is lost:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"trusted": true
},
"outputs": [
{
"ename": "Error",
"evalue": "no such table: players",
"output_type": "error",
"traceback": [
"Error: no such table: players"
]
}
],
"source": [
"SELECT Name, Level, Hitpoints FROM players;"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "SQLite",
"language": "sql",
"name": "SQLite"
},
"language_info": {
"file_extension": ".sqlite3-console",
"mimetype": "text/x-sqlite3-console",
"name": "sqlite3",
"version": "0.4.0"
}
},
"nbformat": 4,
"nbformat_minor": 4
}