Skip to content

Commit 0016464

Browse files
add content
1 parent 9425fc9 commit 0016464

13 files changed

+858
-177
lines changed

Chapter5/SQL.ipynb

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
},
3232
{
3333
"cell_type": "code",
34-
"execution_count": null,
34+
"execution_count": 1,
3535
"id": "4213f666",
3636
"metadata": {},
3737
"outputs": [
@@ -57,7 +57,7 @@
5757
},
5858
{
5959
"cell_type": "code",
60-
"execution_count": null,
60+
"execution_count": 2,
6161
"id": "f445bfcf",
6262
"metadata": {},
6363
"outputs": [
@@ -112,10 +112,27 @@
112112
},
113113
{
114114
"cell_type": "code",
115-
"execution_count": null,
115+
"execution_count": 3,
116116
"id": "a1d09ad3",
117117
"metadata": {},
118-
"outputs": [],
118+
"outputs": [
119+
{
120+
"ename": "ValueError",
121+
"evalue": "invalid literal for int() with base 10: 'port'",
122+
"output_type": "error",
123+
"traceback": [
124+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
125+
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
126+
"Cell \u001b[0;32mIn[3], line 5\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01msqlalchemy\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# Create a SQLAlchemy engine\u001b[39;00m\n\u001b[0;32m----> 5\u001b[0m engine \u001b[38;5;241m=\u001b[39m \u001b[43msqlalchemy\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_engine\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpostgresql://username:password@host:port/database_name\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[1;32m 7\u001b[0m \u001b[43m)\u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Read a SQL table into a DataFrame\u001b[39;00m\n\u001b[1;32m 11\u001b[0m df \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mread_sql(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSELECT * FROM table_name\u001b[39m\u001b[38;5;124m\"\u001b[39m, engine)\n",
127+
"File \u001b[0;32m<string>:2\u001b[0m, in \u001b[0;36mcreate_engine\u001b[0;34m(url, **kwargs)\u001b[0m\n",
128+
"File \u001b[0;32m~/book/venv/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py:281\u001b[0m, in \u001b[0;36mdeprecated_params.<locals>.decorate.<locals>.warned\u001b[0;34m(fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m m \u001b[38;5;129;01min\u001b[39;00m kwargs:\n\u001b[1;32m 275\u001b[0m _warn_with_version(\n\u001b[1;32m 276\u001b[0m messages[m],\n\u001b[1;32m 277\u001b[0m versions[m],\n\u001b[1;32m 278\u001b[0m version_warnings[m],\n\u001b[1;32m 279\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3\u001b[39m,\n\u001b[1;32m 280\u001b[0m )\n\u001b[0;32m--> 281\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
129+
"File \u001b[0;32m~/book/venv/lib/python3.11/site-packages/sqlalchemy/engine/create.py:548\u001b[0m, in \u001b[0;36mcreate_engine\u001b[0;34m(url, **kwargs)\u001b[0m\n\u001b[1;32m 545\u001b[0m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mempty_in_strategy\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 547\u001b[0m \u001b[38;5;66;03m# create url.URL object\u001b[39;00m\n\u001b[0;32m--> 548\u001b[0m u \u001b[38;5;241m=\u001b[39m \u001b[43m_url\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmake_url\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 550\u001b[0m u, plugins, kwargs \u001b[38;5;241m=\u001b[39m u\u001b[38;5;241m.\u001b[39m_instantiate_plugins(kwargs)\n\u001b[1;32m 552\u001b[0m entrypoint \u001b[38;5;241m=\u001b[39m u\u001b[38;5;241m.\u001b[39m_get_entrypoint()\n",
130+
"File \u001b[0;32m~/book/venv/lib/python3.11/site-packages/sqlalchemy/engine/url.py:838\u001b[0m, in \u001b[0;36mmake_url\u001b[0;34m(name_or_url)\u001b[0m\n\u001b[1;32m 822\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Given a string, produce a new URL instance.\u001b[39;00m\n\u001b[1;32m 823\u001b[0m \n\u001b[1;32m 824\u001b[0m \u001b[38;5;124;03mThe format of the URL generally follows `RFC-1738\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 834\u001b[0m \n\u001b[1;32m 835\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 837\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(name_or_url, \u001b[38;5;28mstr\u001b[39m):\n\u001b[0;32m--> 838\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_parse_url\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname_or_url\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 839\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(name_or_url, URL) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(\n\u001b[1;32m 840\u001b[0m name_or_url, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_sqla_is_testing_if_this_is_a_mock_object\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 841\u001b[0m ):\n\u001b[1;32m 842\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\u001b[38;5;241m.\u001b[39mArgumentError(\n\u001b[1;32m 843\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mExpected string or URL object, got \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname_or_url\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 844\u001b[0m )\n",
131+
"File \u001b[0;32m~/book/venv/lib/python3.11/site-packages/sqlalchemy/engine/url.py:899\u001b[0m, in \u001b[0;36m_parse_url\u001b[0;34m(name)\u001b[0m\n\u001b[1;32m 896\u001b[0m name \u001b[38;5;241m=\u001b[39m components\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 898\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m components[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mport\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[0;32m--> 899\u001b[0m components[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mport\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mint\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcomponents\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mport\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 901\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m URL\u001b[38;5;241m.\u001b[39mcreate(name, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mcomponents) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 903\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
132+
"\u001b[0;31mValueError\u001b[0m: invalid literal for int() with base 10: 'port'"
133+
]
134+
}
135+
],
119136
"source": [
120137
"import pandas as pd\n",
121138
"import sqlalchemy\n",
@@ -1154,11 +1171,23 @@
11541171
"[Link to SQLGlot](https://bit.ly/4dGyTmP)."
11551172
]
11561173
},
1174+
{
1175+
"cell_type": "markdown",
1176+
"id": "25108dd4",
1177+
"metadata": {},
1178+
"source": [
1179+
"### SQliteDict: Reducing SQLite Complexity with Dictionary-Style Operations"
1180+
]
1181+
},
11571182
{
11581183
"cell_type": "code",
11591184
"execution_count": null,
11601185
"id": "e7894c33-4dab-4990-8d71-a611e1a82fc7",
1161-
"metadata": {},
1186+
"metadata": {
1187+
"tags": [
1188+
"hide-cell"
1189+
]
1190+
},
11621191
"outputs": [],
11631192
"source": [
11641193
"!pip install sqlitedict"
@@ -1299,7 +1328,7 @@
12991328
],
13001329
"metadata": {
13011330
"kernelspec": {
1302-
"display_name": "Python 3 (ipykernel)",
1331+
"display_name": "venv",
13031332
"language": "python",
13041333
"name": "python3"
13051334
},

Chapter5/query.sql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
SELECT
2+
*
3+
FROM
4+
my_table
5+
LIMIT
6+
$limit
7+
WHERE
8+
start_date > $start_date;

0 commit comments

Comments
 (0)