From 8e32457e947cfa7dbb1872c93717cce167b51045 Mon Sep 17 00:00:00 2001 From: Pollob <146876752+Sikder369@users.noreply.github.com> Date: Mon, 4 May 2026 00:05:08 +0200 Subject: [PATCH] Python_sql_solved --- sql_python.ipynb | 1219 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1219 insertions(+) create mode 100644 sql_python.ipynb diff --git a/sql_python.ipynb b/sql_python.ipynb new file mode 100644 index 0000000..4b97dfd --- /dev/null +++ b/sql_python.ipynb @@ -0,0 +1,1219 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "376fb1d9", + "metadata": {}, + "outputs": [], + "source": [ + "from sqlalchemy import create_engine\n", + "\n", + "engine = create_engine(\"mysql+pymysql://root:11223344@localhost/sakila\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31ecff2c", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "def rentals_month(engine, month, year):\n", + " \"\"\"\n", + " Fetch all rental records for a given month and year.\n", + " \"\"\"\n", + "\n", + " query = f\"\"\"\n", + " SELECT *\n", + " FROM rental\n", + " WHERE MONTH(rental_date) = {month}\n", + " AND YEAR(rental_date) = {year};\n", + " \"\"\"\n", + "\n", + " with engine.connect() as connection:\n", + " df = pd.read_sql_query(query, connection)\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b3650187", + "metadata": {}, + "outputs": [], + "source": [ + "def rental_count_month(df, month, year):\n", + " \"\"\"\n", + " Count how many rentals each customer made in a month.\n", + " \"\"\"\n", + "\n", + " column_name = f\"rentals_{str(month).zfill(2)}_{year}\"\n", + "\n", + " result = (\n", + " df.groupby(\"customer_id\")\n", + " .size()\n", + " .reset_index(name=column_name)\n", + " )\n", + "\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "faeb45f1", + "metadata": {}, + "outputs": [], + "source": [ + "def compare_rentals(df1, df2):\n", + " \"\"\"\n", + " Compare rental counts between two months.\n", + " \"\"\"\n", + "\n", + " merged = pd.merge(df1, df2, on=\"customer_id\", how=\"outer\").fillna(0)\n", + "\n", + " # Get the two rental columns (excluding customer_id)\n", + " cols = [col for col in merged.columns if col != \"customer_id\"]\n", + "\n", + " merged[\"difference\"] = merged[cols[1]] - merged[cols[0]]\n", + "\n", + " return merged" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "610fa1a0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " customer_id rentals_05_2005 rentals_06_2005 difference\n", + "0 1 2.0 7.0 5.0\n", + "1 2 1.0 1.0 0.0\n", + "2 3 2.0 4.0 2.0\n", + "3 4 0.0 6.0 6.0\n", + "4 5 3.0 5.0 2.0\n" + ] + } + ], + "source": [ + "# Step 1: Load data\n", + "may_data = rentals_month(engine, 5, 2005)\n", + "june_data = rentals_month(engine, 6, 2005)\n", + "\n", + "# Step 2: Count rentals\n", + "may_counts = rental_count_month(may_data, 5, 2005)\n", + "june_counts = rental_count_month(june_data, 6, 2005)\n", + "\n", + "# Step 3: Compare\n", + "comparison = compare_rentals(may_counts, june_counts)\n", + "\n", + "# Step 4: View result\n", + "print(comparison.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "91c0c6a0", + "metadata": {}, + "outputs": [], + "source": [ + "query = \"\"\"\n", + "SELECT \n", + " c.customer_id,\n", + " c.first_name,\n", + " c.last_name,\n", + " r.rental_id,\n", + " r.rental_date\n", + "FROM rental r\n", + "JOIN customer c ON r.customer_id = c.customer_id;\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "90346c89", + "metadata": {}, + "outputs": [], + "source": [ + "query = \"SHOW TABLES;\"" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "095214f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
011MARYSMITHMARY.SMITH@sakilacustomer.org512006-02-14 22:04:362006-02-15 00:27:20
121PATRICIAJOHNSONPATRICIA.JOHNSON@sakilacustomer.org612006-02-14 22:04:362006-02-15 00:27:20
231LINDAWILLIAMSLINDA.WILLIAMS@sakilacustomer.org712006-02-14 22:04:362006-02-15 00:27:20
342BARBARAJONESBARBARA.JONES@sakilacustomer.org812006-02-14 22:04:362006-02-15 00:27:20
451ELIZABETHBROWNELIZABETH.BROWN@sakilacustomer.org912006-02-14 22:04:362006-02-15 00:27:20
562JENNIFERDAVISJENNIFER.DAVIS@sakilacustomer.org1012006-02-14 22:04:362006-02-15 00:27:20
671MARIAMILLERMARIA.MILLER@sakilacustomer.org1112006-02-14 22:04:362006-02-15 00:27:20
782SUSANWILSONSUSAN.WILSON@sakilacustomer.org1212006-02-14 22:04:362006-02-15 00:27:20
892MARGARETMOOREMARGARET.MOORE@sakilacustomer.org1312006-02-14 22:04:362006-02-15 00:27:20
9101DOROTHYTAYLORDOROTHY.TAYLOR@sakilacustomer.org1412006-02-14 22:04:362006-02-15 00:27:20
\n", + "
" + ], + "text/plain": [ + " customer_id store_id first_name last_name \\\n", + "0 1 1 MARY SMITH \n", + "1 2 1 PATRICIA JOHNSON \n", + "2 3 1 LINDA WILLIAMS \n", + "3 4 2 BARBARA JONES \n", + "4 5 1 ELIZABETH BROWN \n", + "5 6 2 JENNIFER DAVIS \n", + "6 7 1 MARIA MILLER \n", + "7 8 2 SUSAN WILSON \n", + "8 9 2 MARGARET MOORE \n", + "9 10 1 DOROTHY TAYLOR \n", + "\n", + " email address_id active \\\n", + "0 MARY.SMITH@sakilacustomer.org 5 1 \n", + "1 PATRICIA.JOHNSON@sakilacustomer.org 6 1 \n", + "2 LINDA.WILLIAMS@sakilacustomer.org 7 1 \n", + "3 BARBARA.JONES@sakilacustomer.org 8 1 \n", + "4 ELIZABETH.BROWN@sakilacustomer.org 9 1 \n", + "5 JENNIFER.DAVIS@sakilacustomer.org 10 1 \n", + "6 MARIA.MILLER@sakilacustomer.org 11 1 \n", + "7 SUSAN.WILSON@sakilacustomer.org 12 1 \n", + "8 MARGARET.MOORE@sakilacustomer.org 13 1 \n", + "9 DOROTHY.TAYLOR@sakilacustomer.org 14 1 \n", + "\n", + " create_date last_update \n", + "0 2006-02-14 22:04:36 2006-02-15 00:27:20 \n", + "1 2006-02-14 22:04:36 2006-02-15 00:27:20 \n", + "2 2006-02-14 22:04:36 2006-02-15 00:27:20 \n", + "3 2006-02-14 22:04:36 2006-02-15 00:27:20 \n", + "4 2006-02-14 22:04:36 2006-02-15 00:27:20 \n", + "5 2006-02-14 22:04:36 2006-02-15 00:27:20 \n", + "6 2006-02-14 22:04:36 2006-02-15 00:27:20 \n", + "7 2006-02-14 22:04:36 2006-02-15 00:27:20 \n", + "8 2006-02-14 22:04:36 2006-02-15 00:27:20 \n", + "9 2006-02-14 22:04:36 2006-02-15 00:27:20 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "query = \"SELECT * FROM customer LIMIT 10;\"\n", + "\n", + "with engine.connect() as conn:\n", + " df = pd.read_sql_query(query, conn)\n", + "\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "5df274dd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_idfirst_namelast_nameemailactivecreate_date
01MARYSMITHMARY.SMITH@sakilacustomer.org12006-02-14 22:04:36
12PATRICIAJOHNSONPATRICIA.JOHNSON@sakilacustomer.org12006-02-14 22:04:36
23LINDAWILLIAMSLINDA.WILLIAMS@sakilacustomer.org12006-02-14 22:04:36
34BARBARAJONESBARBARA.JONES@sakilacustomer.org12006-02-14 22:04:36
45ELIZABETHBROWNELIZABETH.BROWN@sakilacustomer.org12006-02-14 22:04:36
56JENNIFERDAVISJENNIFER.DAVIS@sakilacustomer.org12006-02-14 22:04:36
67MARIAMILLERMARIA.MILLER@sakilacustomer.org12006-02-14 22:04:36
78SUSANWILSONSUSAN.WILSON@sakilacustomer.org12006-02-14 22:04:36
89MARGARETMOOREMARGARET.MOORE@sakilacustomer.org12006-02-14 22:04:36
910DOROTHYTAYLORDOROTHY.TAYLOR@sakilacustomer.org12006-02-14 22:04:36
\n", + "
" + ], + "text/plain": [ + " customer_id first_name last_name email \\\n", + "0 1 MARY SMITH MARY.SMITH@sakilacustomer.org \n", + "1 2 PATRICIA JOHNSON PATRICIA.JOHNSON@sakilacustomer.org \n", + "2 3 LINDA WILLIAMS LINDA.WILLIAMS@sakilacustomer.org \n", + "3 4 BARBARA JONES BARBARA.JONES@sakilacustomer.org \n", + "4 5 ELIZABETH BROWN ELIZABETH.BROWN@sakilacustomer.org \n", + "5 6 JENNIFER DAVIS JENNIFER.DAVIS@sakilacustomer.org \n", + "6 7 MARIA MILLER MARIA.MILLER@sakilacustomer.org \n", + "7 8 SUSAN WILSON SUSAN.WILSON@sakilacustomer.org \n", + "8 9 MARGARET MOORE MARGARET.MOORE@sakilacustomer.org \n", + "9 10 DOROTHY TAYLOR DOROTHY.TAYLOR@sakilacustomer.org \n", + "\n", + " active create_date \n", + "0 1 2006-02-14 22:04:36 \n", + "1 1 2006-02-14 22:04:36 \n", + "2 1 2006-02-14 22:04:36 \n", + "3 1 2006-02-14 22:04:36 \n", + "4 1 2006-02-14 22:04:36 \n", + "5 1 2006-02-14 22:04:36 \n", + "6 1 2006-02-14 22:04:36 \n", + "7 1 2006-02-14 22:04:36 \n", + "8 1 2006-02-14 22:04:36 \n", + "9 1 2006-02-14 22:04:36 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "query = \"\"\"\n", + "SELECT \n", + " customer_id,\n", + " first_name,\n", + " last_name,\n", + " email,\n", + " active,\n", + " create_date\n", + "FROM customer\n", + "LIMIT 10;\n", + "\"\"\"\n", + "\n", + "with engine.connect() as conn:\n", + " df = pd.read_sql_query(query, conn)\n", + "\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "69e497e1", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "def get_customer_by_id(engine, customer_id):\n", + " query = f\"\"\"\n", + " SELECT *\n", + " FROM customer\n", + " WHERE customer_id = {customer_id};\n", + " \"\"\"\n", + "\n", + " with engine.connect() as conn:\n", + " df = pd.read_sql_query(query, conn)\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "8cf6ccfb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " customer_id store_id first_name last_name \\\n", + "0 4 2 BARBARA JONES \n", + "\n", + " email address_id active create_date \\\n", + "0 BARBARA.JONES@sakilacustomer.org 8 1 2006-02-14 22:04:36 \n", + "\n", + " last_update \n", + "0 2006-02-15 00:27:20 \n" + ] + } + ], + "source": [ + "customer_id = int(input(\"Enter customer ID: \"))\n", + "\n", + "result = get_customer_by_id(engine, customer_id)\n", + "print(result)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "f6ae2ec5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
071MARIAMILLERMARIA.MILLER@sakilacustomer.org1112006-02-14 22:04:362006-02-15 00:27:20
\n", + "
" + ], + "text/plain": [ + " customer_id store_id first_name last_name \\\n", + "0 7 1 MARIA MILLER \n", + "\n", + " email address_id active create_date \\\n", + "0 MARIA.MILLER@sakilacustomer.org 11 1 2006-02-14 22:04:36 \n", + "\n", + " last_update \n", + "0 2006-02-15 00:27:20 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "customer_id = int(input(\"Enter customer ID: \"))\n", + "\n", + "df = get_customer_by_id(engine, customer_id)\n", + "\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "5e1066b3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
042BARBARAJONESBARBARA.JONES@sakilacustomer.org812006-02-14 22:04:362006-02-15 00:27:20
\n", + "
" + ], + "text/plain": [ + " customer_id store_id first_name last_name \\\n", + "0 4 2 BARBARA JONES \n", + "\n", + " email address_id active create_date \\\n", + "0 BARBARA.JONES@sakilacustomer.org 8 1 2006-02-14 22:04:36 \n", + "\n", + " last_update \n", + "0 2006-02-15 00:27:20 " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "customer_id = int(input(\"Enter customer ID: \"))\n", + "\n", + "df = get_customer_by_id(engine, customer_id)\n", + "\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "212ef96f", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from sqlalchemy import text\n", + "\n", + "def search_customers(engine, keyword):\n", + "\n", + " query = text(\"\"\"\n", + " SELECT \n", + " customer_id,\n", + " first_name,\n", + " last_name,\n", + " email\n", + " FROM customer\n", + " WHERE first_name LIKE :kw\n", + " OR last_name LIKE :kw;\n", + " \"\"\")\n", + "\n", + " params = {\"kw\": f\"%{keyword}%\"}\n", + "\n", + " with engine.connect() as conn:\n", + " df = pd.read_sql(query, conn, params=params)\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "4c519839", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_idfirst_namelast_nameemail
033ANNAHILLANNA.HILL@sakilacustomer.org
148ANNEVANSANN.EVANS@sakilacustomer.org
285ANNEPOWELLANNE.POWELL@sakilacustomer.org
397ANNIERUSSELLANNIE.RUSSELL@sakilacustomer.org
4123SHANNONFREEMANSHANNON.FREEMAN@sakilacustomer.org
5147JOANNEROBERTSONJOANNE.ROBERTSON@sakilacustomer.org
6153SUZANNENICHOLSSUZANNE.NICHOLS@sakilacustomer.org
7164JOANNGARDNERJOANN.GARDNER@sakilacustomer.org
8175ANNETTEOLSONANNETTE.OLSON@sakilacustomer.org
9200JEANNELAWSONJEANNE.LAWSON@sakilacustomer.org
10261DEANNABYRDDEANNA.BYRD@sakilacustomer.org
11279DIANNESHELTONDIANNE.SHELTON@sakilacustomer.org
12299JAMESGANNONJAMES.GANNON@sakilacustomer.org
13399DANNYISOMDANNY.ISOM@sakilacustomer.org
14437RANDALLNEUMANNRANDALL.NEUMANN@sakilacustomer.org
15589TRACYHERRMANNTRACY.HERRMANN@sakilacustomer.org
16590SETHHANNONSETH.HANNON@sakilacustomer.org
\n", + "
" + ], + "text/plain": [ + " customer_id first_name last_name email\n", + "0 33 ANNA HILL ANNA.HILL@sakilacustomer.org\n", + "1 48 ANN EVANS ANN.EVANS@sakilacustomer.org\n", + "2 85 ANNE POWELL ANNE.POWELL@sakilacustomer.org\n", + "3 97 ANNIE RUSSELL ANNIE.RUSSELL@sakilacustomer.org\n", + "4 123 SHANNON FREEMAN SHANNON.FREEMAN@sakilacustomer.org\n", + "5 147 JOANNE ROBERTSON JOANNE.ROBERTSON@sakilacustomer.org\n", + "6 153 SUZANNE NICHOLS SUZANNE.NICHOLS@sakilacustomer.org\n", + "7 164 JOANN GARDNER JOANN.GARDNER@sakilacustomer.org\n", + "8 175 ANNETTE OLSON ANNETTE.OLSON@sakilacustomer.org\n", + "9 200 JEANNE LAWSON JEANNE.LAWSON@sakilacustomer.org\n", + "10 261 DEANNA BYRD DEANNA.BYRD@sakilacustomer.org\n", + "11 279 DIANNE SHELTON DIANNE.SHELTON@sakilacustomer.org\n", + "12 299 JAMES GANNON JAMES.GANNON@sakilacustomer.org\n", + "13 399 DANNY ISOM DANNY.ISOM@sakilacustomer.org\n", + "14 437 RANDALL NEUMANN RANDALL.NEUMANN@sakilacustomer.org\n", + "15 589 TRACY HERRMANN TRACY.HERRMANN@sakilacustomer.org\n", + "16 590 SETH HANNON SETH.HANNON@sakilacustomer.org" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "keyword = input(\"Enter name: \")\n", + "\n", + "df = search_customers(engine, keyword)\n", + "\n", + "df\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "91c2be42", + "metadata": {}, + "outputs": [], + "source": [ + "def rentals_month(engine, month, year):\n", + " \"\"\"\n", + " Fetch all rental records for a given month and year.\n", + " Returns a pandas DataFrame.\n", + " \"\"\"\n", + "\n", + " query = f\"\"\"\n", + " SELECT *\n", + " FROM rental\n", + " WHERE MONTH(rental_date) = {month}\n", + " AND YEAR(rental_date) = {year};\n", + " \"\"\"\n", + "\n", + " with engine.connect() as connection:\n", + " df = pd.read_sql_query(query, connection)\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7296f938", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
rental_idrental_dateinventory_idcustomer_idreturn_datestaff_idlast_update
012005-05-24 22:53:303671302005-05-26 22:04:3012006-02-15 17:00:53
122005-05-24 22:54:3315254592005-05-28 19:40:3312006-02-15 17:00:53
232005-05-24 23:03:3917114082005-06-01 22:12:3912006-02-15 17:00:53
342005-05-24 23:04:4124523332005-06-03 01:43:4122006-02-15 17:00:53
452005-05-24 23:05:2120792222005-06-02 04:33:2112006-02-15 17:00:53
........................
115111532005-05-31 21:36:4427255062005-06-10 01:26:4422006-02-15 17:00:53
115211542005-05-31 21:42:092732592005-06-08 16:40:0912006-02-15 17:00:53
115311552005-05-31 22:17:1120482512005-06-04 20:27:1122006-02-15 17:00:53
115411562005-05-31 22:37:344601062005-06-01 23:02:3422006-02-15 17:00:53
115511572005-05-31 22:47:451449612005-06-02 18:01:4512006-02-15 17:00:53
\n", + "

1156 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " rental_id rental_date inventory_id customer_id \\\n", + "0 1 2005-05-24 22:53:30 367 130 \n", + "1 2 2005-05-24 22:54:33 1525 459 \n", + "2 3 2005-05-24 23:03:39 1711 408 \n", + "3 4 2005-05-24 23:04:41 2452 333 \n", + "4 5 2005-05-24 23:05:21 2079 222 \n", + "... ... ... ... ... \n", + "1151 1153 2005-05-31 21:36:44 2725 506 \n", + "1152 1154 2005-05-31 21:42:09 2732 59 \n", + "1153 1155 2005-05-31 22:17:11 2048 251 \n", + "1154 1156 2005-05-31 22:37:34 460 106 \n", + "1155 1157 2005-05-31 22:47:45 1449 61 \n", + "\n", + " return_date staff_id last_update \n", + "0 2005-05-26 22:04:30 1 2006-02-15 17:00:53 \n", + "1 2005-05-28 19:40:33 1 2006-02-15 17:00:53 \n", + "2 2005-06-01 22:12:39 1 2006-02-15 17:00:53 \n", + "3 2005-06-03 01:43:41 2 2006-02-15 17:00:53 \n", + "4 2005-06-02 04:33:21 1 2006-02-15 17:00:53 \n", + "... ... ... ... \n", + "1151 2005-06-10 01:26:44 2 2006-02-15 17:00:53 \n", + "1152 2005-06-08 16:40:09 1 2006-02-15 17:00:53 \n", + "1153 2005-06-04 20:27:11 2 2006-02-15 17:00:53 \n", + "1154 2005-06-01 23:02:34 2 2006-02-15 17:00:53 \n", + "1155 2005-06-02 18:01:45 1 2006-02-15 17:00:53 \n", + "\n", + "[1156 rows x 7 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = rentals_month(engine, 5, 2005)\n", + "df" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.14.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}