Skip to content

Instantly share code, notes, and snippets.

@catherinedevlin
Last active December 23, 2015 05:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save catherinedevlin/6588378 to your computer and use it in GitHub Desktop.
Save catherinedevlin/6588378 to your computer and use it in GitHub Desktop.
IPython Notebook: your new SQL Client (lightning talk from PostgresOpen 2013)
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"IPython Notebook: your new SQL client"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"IPython Notebook is a Python client *in your browser*\n",
"\n",
"- cells of executable Python and rich HTML (Markdown) interspersed\n",
"- Python runs in an IPython Notebook server (usually local)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"rdbms = 'oracle mysql postgresql'.split()\n",
"ultimate_database = rdbms[-1]\n",
"print(\"We love %s!\" % ultimate_database)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"We love postgresql!\n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"ipython_sql"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"An IPython extension piping data to and from *sqlalchemy* connections"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%load_ext sql\n",
"%sql postgresql://will:longliveliz@localhost/shakes"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"text": [
"u'Connected: will@shakes'"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[OpenSourceShakespeare data](https://github.com/catherinedevlin/opensourceshakespeare)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%sql SELECT * FROM work LIMIT 2"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<table>\n",
" <tr>\n",
" <th>workid</th>\n",
" <th>title</th>\n",
" <th>longtitle</th>\n",
" <th>year</th>\n",
" <th>genretype</th>\n",
" <th>notes</th>\n",
" <th>source</th>\n",
" <th>totalwords</th>\n",
" <th>totalparagraphs</th>\n",
" </tr>\n",
" <tr>\n",
" <td>12night</td>\n",
" <td>Twelfth Night</td>\n",
" <td>Twelfth Night, Or What You Will</td>\n",
" <td>1599</td>\n",
" <td>c</td>\n",
" <td>None</td>\n",
" <td>Moby</td>\n",
" <td>19837</td>\n",
" <td>1031</td>\n",
" </tr>\n",
" <tr>\n",
" <td>allswell</td>\n",
" <td>All's Well That Ends Well</td>\n",
" <td>All's Well That Ends Well</td>\n",
" <td>1602</td>\n",
" <td>c</td>\n",
" <td>None</td>\n",
" <td>Moby</td>\n",
" <td>22997</td>\n",
" <td>1025</td>\n",
" </tr>\n",
"</table>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
"[(u'12night', u'Twelfth Night', u'Twelfth Night, Or What You Will', 1599, u'c', None, u'Moby', 19837, 1031),\n",
" (u'allswell', u\"All's Well That Ends Well\", u\"All's Well That Ends Well\", 1602, u'c', None, u'Moby', 22997, 1025)]"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result = _"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<table>\n",
" <tr>\n",
" <th>workid</th>\n",
" <th>title</th>\n",
" <th>longtitle</th>\n",
" <th>year</th>\n",
" <th>genretype</th>\n",
" <th>notes</th>\n",
" <th>source</th>\n",
" <th>totalwords</th>\n",
" <th>totalparagraphs</th>\n",
" </tr>\n",
" <tr>\n",
" <td>12night</td>\n",
" <td>Twelfth Night</td>\n",
" <td>Twelfth Night, Or What You Will</td>\n",
" <td>1599</td>\n",
" <td>c</td>\n",
" <td>None</td>\n",
" <td>Moby</td>\n",
" <td>19837</td>\n",
" <td>1031</td>\n",
" </tr>\n",
" <tr>\n",
" <td>allswell</td>\n",
" <td>All's Well That Ends Well</td>\n",
" <td>All's Well That Ends Well</td>\n",
" <td>1602</td>\n",
" <td>c</td>\n",
" <td>None</td>\n",
" <td>Moby</td>\n",
" <td>22997</td>\n",
" <td>1025</td>\n",
" </tr>\n",
"</table>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"text": [
"[(u'12night', u'Twelfth Night', u'Twelfth Night, Or What You Will', 1599, u'c', None, u'Moby', 19837, 1031),\n",
" (u'allswell', u\"All's Well That Ends Well\", u\"All's Well That Ends Well\", 1602, u'c', None, u'Moby', 22997, 1025)]"
]
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python objects, like our result set, can describe themselves in good-looking HTML terms for the Notebook's sake. Nonetheless, our result set is basically just a Python `list`."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result[0]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"text": [
"(u'12night', u'Twelfth Night', u'Twelfth Night, Or What You Will', 1599, u'c', None, u'Moby', 19837, 1031)"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result[0][0]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"u'12night'"
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... except that we can also see the column names (`keys`), then use them to pick out column values."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result.keys"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 8,
"text": [
"[u'workid',\n",
" u'title',\n",
" u'longtitle',\n",
" u'year',\n",
" u'genretype',\n",
" u'notes',\n",
" u'source',\n",
" u'totalwords',\n",
" u'totalparagraphs']"
]
}
],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result[0]['longtitle']"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 9,
"text": [
"u'Twelfth Night, Or What You Will'"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Single-line SQL results can be assigned directly to a Python variable."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result = %sql SELECT workid, title FROM work WHERE title ILIKE '%as%'"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<table>\n",
" <tr>\n",
" <th>workid</th>\n",
" <th>title</th>\n",
" </tr>\n",
" <tr>\n",
" <td>asyoulikeit</td>\n",
" <td>As You Like It</td>\n",
" </tr>\n",
" <tr>\n",
" <td>measure</td>\n",
" <td>Measure for Measure</td>\n",
" </tr>\n",
" <tr>\n",
" <td>passionatepilgrim</td>\n",
" <td>Passionate Pilgrim</td>\n",
" </tr>\n",
"</table>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 11,
"text": [
"[(u'asyoulikeit', u'As You Like It'),\n",
" (u'measure', u'Measure for Measure'),\n",
" (u'passionatepilgrim', u'Passionate Pilgrim')]"
]
}
],
"prompt_number": 11
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"bind variables"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"play_name = 'Tempest'"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%sql \n",
"SELECT \n",
" c.charname,\n",
" c.description,\n",
" c.speechcount\n",
"FROM work w\n",
"JOIN character_work cw ON (w.workid = cw.workid)\n",
"JOIN character c ON (cw.charid = c.charid)\n",
"WHERE w.title = :play_name\n",
"AND c.description != 'presented by spirits'"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<table>\n",
" <tr>\n",
" <th>charname</th>\n",
" <th>description</th>\n",
" <th>speechcount</th>\n",
" </tr>\n",
" <tr>\n",
" <td>Adrian</td>\n",
" <td>a lord</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Alonso</td>\n",
" <td>king of Naples</td>\n",
" <td>40</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Antonio</td>\n",
" <td>the King's brother, the usurping Duke of Milan</td>\n",
" <td>57</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Ariel</td>\n",
" <td>an airy spirit</td>\n",
" <td>45</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Caliban</td>\n",
" <td>a savage and deformed slave</td>\n",
" <td>50</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Ferdinand</td>\n",
" <td>son to the King of Naples</td>\n",
" <td>31</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Francisco</td>\n",
" <td>a lord</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Gonzalo</td>\n",
" <td>an honest old counsellor</td>\n",
" <td>52</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Master</td>\n",
" <td>master of a ship</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Miranda</td>\n",
" <td>daughter to Prospero</td>\n",
" <td>49</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Prospero</td>\n",
" <td>the rightful Duke of Milan</td>\n",
" <td>115</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Sebastian</td>\n",
" <td>the King's brother</td>\n",
" <td>67</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Stephano</td>\n",
" <td>a drunken butler</td>\n",
" <td>60</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Trinculo</td>\n",
" <td>a jester</td>\n",
" <td>39</td>\n",
" </tr>\n",
"</table>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 13,
"text": [
"[(u'Adrian', u'a lord', 9),\n",
" (u'Alonso', u'king of Naples', 40),\n",
" (u'Antonio', u\"the King's brother, the usurping Duke of Milan\", 57),\n",
" (u'Ariel', u'an airy spirit', 45),\n",
" (u'Caliban', u'a savage and deformed slave', 50),\n",
" (u'Ferdinand', u'son to the King of Naples', 31),\n",
" (u'Francisco', u'a lord', 2),\n",
" (u'Gonzalo', u'an honest old counsellor', 52),\n",
" (u'Master', u'master of a ship', 2),\n",
" (u'Miranda', u'daughter to Prospero', 49),\n",
" (u'Prospero', u'the rightful Duke of Milan', 115),\n",
" (u'Sebastian', u\"the King's brother\", 67),\n",
" (u'Stephano', u'a drunken butler', 60),\n",
" (u'Trinculo', u'a jester', 39)]"
]
}
],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result = _"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Pandas!"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pandas as pd\n",
"dataframe = pd.DataFrame(result, columns=result.keys)\n",
"dataframe"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>charname</th>\n",
" <th>description</th>\n",
" <th>speechcount</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0 </th>\n",
" <td> Adrian</td>\n",
" <td> a lord</td>\n",
" <td> 9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1 </th>\n",
" <td> Alonso</td>\n",
" <td> king of Naples</td>\n",
" <td> 40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2 </th>\n",
" <td> Antonio</td>\n",
" <td> the King's brother, the usurping Duke of Milan</td>\n",
" <td> 57</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3 </th>\n",
" <td> Ariel</td>\n",
" <td> an airy spirit</td>\n",
" <td> 45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4 </th>\n",
" <td> Caliban</td>\n",
" <td> a savage and deformed slave</td>\n",
" <td> 50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5 </th>\n",
" <td> Ferdinand</td>\n",
" <td> son to the King of Naples</td>\n",
" <td> 31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6 </th>\n",
" <td> Francisco</td>\n",
" <td> a lord</td>\n",
" <td> 2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7 </th>\n",
" <td> Gonzalo</td>\n",
" <td> an honest old counsellor</td>\n",
" <td> 52</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8 </th>\n",
" <td> Master</td>\n",
" <td> master of a ship</td>\n",
" <td> 2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9 </th>\n",
" <td> Miranda</td>\n",
" <td> daughter to Prospero</td>\n",
" <td> 49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td> Prospero</td>\n",
" <td> the rightful Duke of Milan</td>\n",
" <td> 115</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td> Sebastian</td>\n",
" <td> the King's brother</td>\n",
" <td> 67</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td> Stephano</td>\n",
" <td> a drunken butler</td>\n",
" <td> 60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td> Trinculo</td>\n",
" <td> a jester</td>\n",
" <td> 39</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 15,
"text": [
" charname description speechcount\n",
"0 Adrian a lord 9\n",
"1 Alonso king of Naples 40\n",
"2 Antonio the King's brother, the usurping Duke of Milan 57\n",
"3 Ariel an airy spirit 45\n",
"4 Caliban a savage and deformed slave 50\n",
"5 Ferdinand son to the King of Naples 31\n",
"6 Francisco a lord 2\n",
"7 Gonzalo an honest old counsellor 52\n",
"8 Master master of a ship 2\n",
"9 Miranda daughter to Prospero 49\n",
"10 Prospero the rightful Duke of Milan 115\n",
"11 Sebastian the King's brother 67\n",
"12 Stephano a drunken butler 60\n",
"13 Trinculo a jester 39"
]
}
],
"prompt_number": 15
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"matplotlib"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import matplotlib.pyplot as plt"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.pie(dataframe.speechcount, labels=dataframe.charname)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 18,
"text": [
"([<matplotlib.patches.Wedge at 0x4959b10>,\n",
" <matplotlib.patches.Wedge at 0x495d110>,\n",
" <matplotlib.patches.Wedge at 0x495d650>,\n",
" <matplotlib.patches.Wedge at 0x495db50>,\n",
" <matplotlib.patches.Wedge at 0x4960090>,\n",
" <matplotlib.patches.Wedge at 0x4960590>,\n",
" <matplotlib.patches.Wedge at 0x4960a90>,\n",
" <matplotlib.patches.Wedge at 0x4960f90>,\n",
" <matplotlib.patches.Wedge at 0x49634d0>,\n",
" <matplotlib.patches.Wedge at 0x49639d0>,\n",
" <matplotlib.patches.Wedge at 0x4963ed0>,\n",
" <matplotlib.patches.Wedge at 0x4968410>,\n",
" <matplotlib.patches.Wedge at 0x4968910>,\n",
" <matplotlib.patches.Wedge at 0x4968e10>],\n",
" [<matplotlib.text.Text at 0x4959fd0>,\n",
" <matplotlib.text.Text at 0x495d590>,\n",
" <matplotlib.text.Text at 0x495da90>,\n",
" <matplotlib.text.Text at 0x495df90>,\n",
" <matplotlib.text.Text at 0x49604d0>,\n",
" <matplotlib.text.Text at 0x49609d0>,\n",
" <matplotlib.text.Text at 0x4960ed0>,\n",
" <matplotlib.text.Text at 0x4963410>,\n",
" <matplotlib.text.Text at 0x4963910>,\n",
" <matplotlib.text.Text at 0x4963e10>,\n",
" <matplotlib.text.Text at 0x4968350>,\n",
" <matplotlib.text.Text at 0x4968850>,\n",
" <matplotlib.text.Text at 0x4968d50>,\n",
" <matplotlib.text.Text at 0x496b290>])"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nIAiCA/p/RdjBuO7gjsoAAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x4840d50>"
]
}
],
"prompt_number": 18
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"This presentation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"View and download at http://nbviewer.ipython.org/6588378 or http://tinyurl.com/pgopen2013-ipy-sql"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Installation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The simplest course is to download and install [Anaconda](https://store.continuum.io/cshop/anaconda/), a Python distribution from [Continuum Analytics](https://store.continuum.io/cshop/anaconda/) that includes `ipython`, `pandas`, `matplotlib`, etc. Then\n",
"\n",
" your_anaconda_directory/bin/pip install ipython_sql\n",
" "
]
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment