{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "7f637ded-b98e-4845-8782-3fdd6f065b72",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from pandas import DataFrame\n",
    "from DATA225utils import make_connection, dataframe_query"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "365d9407-2861-409d-a6f4-b6287a2a6f07",
   "metadata": {},
   "outputs": [],
   "source": [
    "conn = make_connection(config_file = 'month.ini')\n",
    "cursor = conn.cursor()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "b86c7262-2ac4-429c-9cc0-1db9e3cf1697",
   "metadata": {},
   "outputs": [],
   "source": [
    "cursor.execute('DROP TABLE IF EXISTS dates')\n",
    "\n",
    "sql = \"\"\"\n",
    "    CREATE TABLE dates\n",
    "    (\n",
    "        id                INT AUTO_INCREMENT,\n",
    "        method            VARCHAR(16),\n",
    "        full_date         DATE,\n",
    "        day_of_week_name  VARCHAR(9),\n",
    "        day_number        INT,\n",
    "        month_number      INT,\n",
    "        year_number       INT,\n",
    "        PRIMARY KEY(id)\n",
    "    )\n",
    "    \"\"\"\n",
    "\n",
    "cursor.execute(sql)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fbe86cd2-d737-4c75-9d3a-9bdfc47cca37",
   "metadata": {
    "tags": []
   },
   "source": [
    "## Call stored procedure `while_proc()`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e2a1781e-d628-4f25-88cc-d6aa448d819a",
   "metadata": {},
   "outputs": [],
   "source": [
    "cursor.execute(\"CALL while_proc('2023-10-1', 0)\")\n",
    "conn.commit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "6b77ba50-a198-489c-b000-3c445f1936d5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>method</th>\n",
       "      <th>full_date</th>\n",
       "      <th>day_of_week_name</th>\n",
       "      <th>day_number</th>\n",
       "      <th>month_number</th>\n",
       "      <th>year_number</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-01</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-02</td>\n",
       "      <td>Monday</td>\n",
       "      <td>2</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-03</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>3</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-04</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>4</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-05</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>5</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-06</td>\n",
       "      <td>Friday</td>\n",
       "      <td>6</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-07</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>7</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-08</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-09</td>\n",
       "      <td>Monday</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-10</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-11</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>12</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-12</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>12</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>13</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-13</td>\n",
       "      <td>Friday</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>14</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-14</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>15</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-15</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>16</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-16</td>\n",
       "      <td>Monday</td>\n",
       "      <td>16</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>17</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-17</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>17</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>18</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-18</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>18</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>19</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-19</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>20</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-20</td>\n",
       "      <td>Friday</td>\n",
       "      <td>20</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>21</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-21</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>21</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>22</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-22</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>22</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>23</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-23</td>\n",
       "      <td>Monday</td>\n",
       "      <td>23</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>24</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-24</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>24</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>25</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-25</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>25</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>26</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-26</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>26</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>27</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-27</td>\n",
       "      <td>Friday</td>\n",
       "      <td>27</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>28</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-28</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>28</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>29</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-29</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>29</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>30</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-30</td>\n",
       "      <td>Monday</td>\n",
       "      <td>30</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>31</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-31</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>31</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    id method   full_date day_of_week_name  day_number  month_number  \\\n",
       "0    1  while  2023-10-01           Sunday           1            10   \n",
       "1    2  while  2023-10-02           Monday           2            10   \n",
       "2    3  while  2023-10-03          Tuesday           3            10   \n",
       "3    4  while  2023-10-04        Wednesday           4            10   \n",
       "4    5  while  2023-10-05         Thursday           5            10   \n",
       "5    6  while  2023-10-06           Friday           6            10   \n",
       "6    7  while  2023-10-07         Saturday           7            10   \n",
       "7    8  while  2023-10-08           Sunday           8            10   \n",
       "8    9  while  2023-10-09           Monday           9            10   \n",
       "9   10  while  2023-10-10          Tuesday          10            10   \n",
       "10  11  while  2023-10-11        Wednesday          11            10   \n",
       "11  12  while  2023-10-12         Thursday          12            10   \n",
       "12  13  while  2023-10-13           Friday          13            10   \n",
       "13  14  while  2023-10-14         Saturday          14            10   \n",
       "14  15  while  2023-10-15           Sunday          15            10   \n",
       "15  16  while  2023-10-16           Monday          16            10   \n",
       "16  17  while  2023-10-17          Tuesday          17            10   \n",
       "17  18  while  2023-10-18        Wednesday          18            10   \n",
       "18  19  while  2023-10-19         Thursday          19            10   \n",
       "19  20  while  2023-10-20           Friday          20            10   \n",
       "20  21  while  2023-10-21         Saturday          21            10   \n",
       "21  22  while  2023-10-22           Sunday          22            10   \n",
       "22  23  while  2023-10-23           Monday          23            10   \n",
       "23  24  while  2023-10-24          Tuesday          24            10   \n",
       "24  25  while  2023-10-25        Wednesday          25            10   \n",
       "25  26  while  2023-10-26         Thursday          26            10   \n",
       "26  27  while  2023-10-27           Friday          27            10   \n",
       "27  28  while  2023-10-28         Saturday          28            10   \n",
       "28  29  while  2023-10-29           Sunday          29            10   \n",
       "29  30  while  2023-10-30           Monday          30            10   \n",
       "30  31  while  2023-10-31          Tuesday          31            10   \n",
       "\n",
       "    year_number  \n",
       "0          2023  \n",
       "1          2023  \n",
       "2          2023  \n",
       "3          2023  \n",
       "4          2023  \n",
       "5          2023  \n",
       "6          2023  \n",
       "7          2023  \n",
       "8          2023  \n",
       "9          2023  \n",
       "10         2023  \n",
       "11         2023  \n",
       "12         2023  \n",
       "13         2023  \n",
       "14         2023  \n",
       "15         2023  \n",
       "16         2023  \n",
       "17         2023  \n",
       "18         2023  \n",
       "19         2023  \n",
       "20         2023  \n",
       "21         2023  \n",
       "22         2023  \n",
       "23         2023  \n",
       "24         2023  \n",
       "25         2023  \n",
       "26         2023  \n",
       "27         2023  \n",
       "28         2023  \n",
       "29         2023  \n",
       "30         2023  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "_, df = dataframe_query(conn, 'SELECT * FROM dates LIMIT 31')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d64a04d-6797-4443-a7fa-3707625532ae",
   "metadata": {
    "tags": []
   },
   "source": [
    "## Call stored procedure `repeat_proc()`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "d5df402d-f1c2-43d9-9e32-3264d52a7a6d",
   "metadata": {},
   "outputs": [],
   "source": [
    "cursor.execute(\"CALL repeat_proc('2023-10-1', 0)\")\n",
    "conn.commit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "a6480d27-d671-4736-96d2-aa725f8ee174",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>method</th>\n",
       "      <th>full_date</th>\n",
       "      <th>day_of_week_name</th>\n",
       "      <th>day_number</th>\n",
       "      <th>month_number</th>\n",
       "      <th>year_number</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>32</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-01</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>33</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-02</td>\n",
       "      <td>Monday</td>\n",
       "      <td>2</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-03</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>3</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>35</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-04</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>4</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>36</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-05</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>5</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>37</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-06</td>\n",
       "      <td>Friday</td>\n",
       "      <td>6</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>38</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-07</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>7</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>39</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-08</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>40</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-09</td>\n",
       "      <td>Monday</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>41</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-10</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>42</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-11</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>43</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-12</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>12</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>44</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-13</td>\n",
       "      <td>Friday</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>45</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-14</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>46</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-15</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>47</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-16</td>\n",
       "      <td>Monday</td>\n",
       "      <td>16</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>48</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-17</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>17</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>49</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-18</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>18</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>50</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-19</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>51</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-20</td>\n",
       "      <td>Friday</td>\n",
       "      <td>20</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>52</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-21</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>21</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>53</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-22</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>22</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>54</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-23</td>\n",
       "      <td>Monday</td>\n",
       "      <td>23</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>55</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-24</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>24</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>56</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-25</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>25</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>57</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-26</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>26</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>58</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-27</td>\n",
       "      <td>Friday</td>\n",
       "      <td>27</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>59</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-28</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>28</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>60</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-29</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>29</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>61</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-30</td>\n",
       "      <td>Monday</td>\n",
       "      <td>30</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>62</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-31</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>31</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    id  method   full_date day_of_week_name  day_number  month_number  \\\n",
       "0   32  repeat  2023-10-01           Sunday           1            10   \n",
       "1   33  repeat  2023-10-02           Monday           2            10   \n",
       "2   34  repeat  2023-10-03          Tuesday           3            10   \n",
       "3   35  repeat  2023-10-04        Wednesday           4            10   \n",
       "4   36  repeat  2023-10-05         Thursday           5            10   \n",
       "5   37  repeat  2023-10-06           Friday           6            10   \n",
       "6   38  repeat  2023-10-07         Saturday           7            10   \n",
       "7   39  repeat  2023-10-08           Sunday           8            10   \n",
       "8   40  repeat  2023-10-09           Monday           9            10   \n",
       "9   41  repeat  2023-10-10          Tuesday          10            10   \n",
       "10  42  repeat  2023-10-11        Wednesday          11            10   \n",
       "11  43  repeat  2023-10-12         Thursday          12            10   \n",
       "12  44  repeat  2023-10-13           Friday          13            10   \n",
       "13  45  repeat  2023-10-14         Saturday          14            10   \n",
       "14  46  repeat  2023-10-15           Sunday          15            10   \n",
       "15  47  repeat  2023-10-16           Monday          16            10   \n",
       "16  48  repeat  2023-10-17          Tuesday          17            10   \n",
       "17  49  repeat  2023-10-18        Wednesday          18            10   \n",
       "18  50  repeat  2023-10-19         Thursday          19            10   \n",
       "19  51  repeat  2023-10-20           Friday          20            10   \n",
       "20  52  repeat  2023-10-21         Saturday          21            10   \n",
       "21  53  repeat  2023-10-22           Sunday          22            10   \n",
       "22  54  repeat  2023-10-23           Monday          23            10   \n",
       "23  55  repeat  2023-10-24          Tuesday          24            10   \n",
       "24  56  repeat  2023-10-25        Wednesday          25            10   \n",
       "25  57  repeat  2023-10-26         Thursday          26            10   \n",
       "26  58  repeat  2023-10-27           Friday          27            10   \n",
       "27  59  repeat  2023-10-28         Saturday          28            10   \n",
       "28  60  repeat  2023-10-29           Sunday          29            10   \n",
       "29  61  repeat  2023-10-30           Monday          30            10   \n",
       "30  62  repeat  2023-10-31          Tuesday          31            10   \n",
       "\n",
       "    year_number  \n",
       "0          2023  \n",
       "1          2023  \n",
       "2          2023  \n",
       "3          2023  \n",
       "4          2023  \n",
       "5          2023  \n",
       "6          2023  \n",
       "7          2023  \n",
       "8          2023  \n",
       "9          2023  \n",
       "10         2023  \n",
       "11         2023  \n",
       "12         2023  \n",
       "13         2023  \n",
       "14         2023  \n",
       "15         2023  \n",
       "16         2023  \n",
       "17         2023  \n",
       "18         2023  \n",
       "19         2023  \n",
       "20         2023  \n",
       "21         2023  \n",
       "22         2023  \n",
       "23         2023  \n",
       "24         2023  \n",
       "25         2023  \n",
       "26         2023  \n",
       "27         2023  \n",
       "28         2023  \n",
       "29         2023  \n",
       "30         2023  "
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "_, df = dataframe_query(conn, 'SELECT * FROM dates LIMIT 31 OFFSET 31')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "30beb63a-df5a-48ee-bce2-b49d8c17360e",
   "metadata": {
    "tags": []
   },
   "source": [
    "## Call stored procedure `loop_proc()`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "1c8cb462-bd21-4928-af4c-ede5edfcb4b9",
   "metadata": {},
   "outputs": [],
   "source": [
    "cursor.execute(\"CALL loop_proc('2023-10-1', 0)\")\n",
    "conn.commit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "cf6f56fb-0563-433c-986b-baf2bc800f95",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>method</th>\n",
       "      <th>full_date</th>\n",
       "      <th>day_of_week_name</th>\n",
       "      <th>day_number</th>\n",
       "      <th>month_number</th>\n",
       "      <th>year_number</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>63</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-01</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>64</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-02</td>\n",
       "      <td>Monday</td>\n",
       "      <td>2</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>65</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-03</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>3</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>66</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-04</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>4</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>67</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-05</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>5</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>68</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-06</td>\n",
       "      <td>Friday</td>\n",
       "      <td>6</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>69</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-07</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>7</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>70</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-08</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>71</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-09</td>\n",
       "      <td>Monday</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>72</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-10</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>73</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-11</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>74</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-12</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>12</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>75</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-13</td>\n",
       "      <td>Friday</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>76</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-14</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>77</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-15</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>78</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-16</td>\n",
       "      <td>Monday</td>\n",
       "      <td>16</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>79</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-17</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>17</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>80</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-18</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>18</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>81</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-19</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>82</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-20</td>\n",
       "      <td>Friday</td>\n",
       "      <td>20</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>83</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-21</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>21</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>84</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-22</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>22</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>85</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-23</td>\n",
       "      <td>Monday</td>\n",
       "      <td>23</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>86</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-24</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>24</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>87</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-25</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>25</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>88</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-26</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>26</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>89</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-27</td>\n",
       "      <td>Friday</td>\n",
       "      <td>27</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>90</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-28</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>28</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>91</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-29</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>29</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>92</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-30</td>\n",
       "      <td>Monday</td>\n",
       "      <td>30</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>93</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-31</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>31</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    id method   full_date day_of_week_name  day_number  month_number  \\\n",
       "0   63   loop  2023-10-01           Sunday           1            10   \n",
       "1   64   loop  2023-10-02           Monday           2            10   \n",
       "2   65   loop  2023-10-03          Tuesday           3            10   \n",
       "3   66   loop  2023-10-04        Wednesday           4            10   \n",
       "4   67   loop  2023-10-05         Thursday           5            10   \n",
       "5   68   loop  2023-10-06           Friday           6            10   \n",
       "6   69   loop  2023-10-07         Saturday           7            10   \n",
       "7   70   loop  2023-10-08           Sunday           8            10   \n",
       "8   71   loop  2023-10-09           Monday           9            10   \n",
       "9   72   loop  2023-10-10          Tuesday          10            10   \n",
       "10  73   loop  2023-10-11        Wednesday          11            10   \n",
       "11  74   loop  2023-10-12         Thursday          12            10   \n",
       "12  75   loop  2023-10-13           Friday          13            10   \n",
       "13  76   loop  2023-10-14         Saturday          14            10   \n",
       "14  77   loop  2023-10-15           Sunday          15            10   \n",
       "15  78   loop  2023-10-16           Monday          16            10   \n",
       "16  79   loop  2023-10-17          Tuesday          17            10   \n",
       "17  80   loop  2023-10-18        Wednesday          18            10   \n",
       "18  81   loop  2023-10-19         Thursday          19            10   \n",
       "19  82   loop  2023-10-20           Friday          20            10   \n",
       "20  83   loop  2023-10-21         Saturday          21            10   \n",
       "21  84   loop  2023-10-22           Sunday          22            10   \n",
       "22  85   loop  2023-10-23           Monday          23            10   \n",
       "23  86   loop  2023-10-24          Tuesday          24            10   \n",
       "24  87   loop  2023-10-25        Wednesday          25            10   \n",
       "25  88   loop  2023-10-26         Thursday          26            10   \n",
       "26  89   loop  2023-10-27           Friday          27            10   \n",
       "27  90   loop  2023-10-28         Saturday          28            10   \n",
       "28  91   loop  2023-10-29           Sunday          29            10   \n",
       "29  92   loop  2023-10-30           Monday          30            10   \n",
       "30  93   loop  2023-10-31          Tuesday          31            10   \n",
       "\n",
       "    year_number  \n",
       "0          2023  \n",
       "1          2023  \n",
       "2          2023  \n",
       "3          2023  \n",
       "4          2023  \n",
       "5          2023  \n",
       "6          2023  \n",
       "7          2023  \n",
       "8          2023  \n",
       "9          2023  \n",
       "10         2023  \n",
       "11         2023  \n",
       "12         2023  \n",
       "13         2023  \n",
       "14         2023  \n",
       "15         2023  \n",
       "16         2023  \n",
       "17         2023  \n",
       "18         2023  \n",
       "19         2023  \n",
       "20         2023  \n",
       "21         2023  \n",
       "22         2023  \n",
       "23         2023  \n",
       "24         2023  \n",
       "25         2023  \n",
       "26         2023  \n",
       "27         2023  \n",
       "28         2023  \n",
       "29         2023  \n",
       "30         2023  "
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "_, df = dataframe_query(conn, 'SELECT * FROM dates LIMIT 31 OFFSET 62')\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "ca263d23-4c6d-4368-bf10-1f6065817f14",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>method</th>\n",
       "      <th>full_date</th>\n",
       "      <th>day_of_week_name</th>\n",
       "      <th>day_number</th>\n",
       "      <th>month_number</th>\n",
       "      <th>year_number</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-01</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-02</td>\n",
       "      <td>Monday</td>\n",
       "      <td>2</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-03</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>3</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-04</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>4</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-05</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>5</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-06</td>\n",
       "      <td>Friday</td>\n",
       "      <td>6</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-07</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>7</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-08</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-09</td>\n",
       "      <td>Monday</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-10</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-11</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>12</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-12</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>12</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>13</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-13</td>\n",
       "      <td>Friday</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>14</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-14</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>15</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-15</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>16</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-16</td>\n",
       "      <td>Monday</td>\n",
       "      <td>16</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>17</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-17</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>17</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>18</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-18</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>18</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>19</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-19</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>20</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-20</td>\n",
       "      <td>Friday</td>\n",
       "      <td>20</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>21</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-21</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>21</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>22</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-22</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>22</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>23</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-23</td>\n",
       "      <td>Monday</td>\n",
       "      <td>23</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>24</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-24</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>24</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>25</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-25</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>25</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>26</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-26</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>26</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>27</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-27</td>\n",
       "      <td>Friday</td>\n",
       "      <td>27</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>28</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-28</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>28</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>29</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-29</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>29</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>30</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-30</td>\n",
       "      <td>Monday</td>\n",
       "      <td>30</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>31</td>\n",
       "      <td>while</td>\n",
       "      <td>2023-10-31</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>31</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>32</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-01</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>33</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-02</td>\n",
       "      <td>Monday</td>\n",
       "      <td>2</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>34</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-03</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>3</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>35</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-04</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>4</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>36</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-05</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>5</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>37</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-06</td>\n",
       "      <td>Friday</td>\n",
       "      <td>6</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>38</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-07</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>7</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>39</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-08</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>40</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-09</td>\n",
       "      <td>Monday</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>41</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-10</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>42</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-11</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>43</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-12</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>12</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>44</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-13</td>\n",
       "      <td>Friday</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>45</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-14</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>46</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-15</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>47</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-16</td>\n",
       "      <td>Monday</td>\n",
       "      <td>16</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>48</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-17</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>17</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>49</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-18</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>18</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>50</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-19</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>51</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-20</td>\n",
       "      <td>Friday</td>\n",
       "      <td>20</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>52</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-21</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>21</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>53</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-22</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>22</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>54</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-23</td>\n",
       "      <td>Monday</td>\n",
       "      <td>23</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>55</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-24</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>24</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>56</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-25</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>25</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56</th>\n",
       "      <td>57</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-26</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>26</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57</th>\n",
       "      <td>58</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-27</td>\n",
       "      <td>Friday</td>\n",
       "      <td>27</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>58</th>\n",
       "      <td>59</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-28</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>28</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>60</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-29</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>29</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>60</th>\n",
       "      <td>61</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-30</td>\n",
       "      <td>Monday</td>\n",
       "      <td>30</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>61</th>\n",
       "      <td>62</td>\n",
       "      <td>repeat</td>\n",
       "      <td>2023-10-31</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>31</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>62</th>\n",
       "      <td>63</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-01</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63</th>\n",
       "      <td>64</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-02</td>\n",
       "      <td>Monday</td>\n",
       "      <td>2</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>65</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-03</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>3</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>66</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-04</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>4</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>66</th>\n",
       "      <td>67</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-05</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>5</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67</th>\n",
       "      <td>68</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-06</td>\n",
       "      <td>Friday</td>\n",
       "      <td>6</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>69</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-07</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>7</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>69</th>\n",
       "      <td>70</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-08</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>70</th>\n",
       "      <td>71</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-09</td>\n",
       "      <td>Monday</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71</th>\n",
       "      <td>72</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-10</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>72</th>\n",
       "      <td>73</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-11</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>73</th>\n",
       "      <td>74</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-12</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>12</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74</th>\n",
       "      <td>75</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-13</td>\n",
       "      <td>Friday</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75</th>\n",
       "      <td>76</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-14</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>76</th>\n",
       "      <td>77</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-15</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>77</th>\n",
       "      <td>78</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-16</td>\n",
       "      <td>Monday</td>\n",
       "      <td>16</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>78</th>\n",
       "      <td>79</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-17</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>17</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>79</th>\n",
       "      <td>80</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-18</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>18</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>80</th>\n",
       "      <td>81</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-19</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>81</th>\n",
       "      <td>82</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-20</td>\n",
       "      <td>Friday</td>\n",
       "      <td>20</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82</th>\n",
       "      <td>83</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-21</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>21</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>83</th>\n",
       "      <td>84</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-22</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>22</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84</th>\n",
       "      <td>85</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-23</td>\n",
       "      <td>Monday</td>\n",
       "      <td>23</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>85</th>\n",
       "      <td>86</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-24</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>24</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>86</th>\n",
       "      <td>87</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-25</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>25</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>87</th>\n",
       "      <td>88</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-26</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>26</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>88</th>\n",
       "      <td>89</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-27</td>\n",
       "      <td>Friday</td>\n",
       "      <td>27</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89</th>\n",
       "      <td>90</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-28</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>28</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>90</th>\n",
       "      <td>91</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-29</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>29</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>91</th>\n",
       "      <td>92</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-30</td>\n",
       "      <td>Monday</td>\n",
       "      <td>30</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>92</th>\n",
       "      <td>93</td>\n",
       "      <td>loop</td>\n",
       "      <td>2023-10-31</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>31</td>\n",
       "      <td>10</td>\n",
       "      <td>2023</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    id  method   full_date day_of_week_name  day_number  month_number  \\\n",
       "0    1   while  2023-10-01           Sunday           1            10   \n",
       "1    2   while  2023-10-02           Monday           2            10   \n",
       "2    3   while  2023-10-03          Tuesday           3            10   \n",
       "3    4   while  2023-10-04        Wednesday           4            10   \n",
       "4    5   while  2023-10-05         Thursday           5            10   \n",
       "5    6   while  2023-10-06           Friday           6            10   \n",
       "6    7   while  2023-10-07         Saturday           7            10   \n",
       "7    8   while  2023-10-08           Sunday           8            10   \n",
       "8    9   while  2023-10-09           Monday           9            10   \n",
       "9   10   while  2023-10-10          Tuesday          10            10   \n",
       "10  11   while  2023-10-11        Wednesday          11            10   \n",
       "11  12   while  2023-10-12         Thursday          12            10   \n",
       "12  13   while  2023-10-13           Friday          13            10   \n",
       "13  14   while  2023-10-14         Saturday          14            10   \n",
       "14  15   while  2023-10-15           Sunday          15            10   \n",
       "15  16   while  2023-10-16           Monday          16            10   \n",
       "16  17   while  2023-10-17          Tuesday          17            10   \n",
       "17  18   while  2023-10-18        Wednesday          18            10   \n",
       "18  19   while  2023-10-19         Thursday          19            10   \n",
       "19  20   while  2023-10-20           Friday          20            10   \n",
       "20  21   while  2023-10-21         Saturday          21            10   \n",
       "21  22   while  2023-10-22           Sunday          22            10   \n",
       "22  23   while  2023-10-23           Monday          23            10   \n",
       "23  24   while  2023-10-24          Tuesday          24            10   \n",
       "24  25   while  2023-10-25        Wednesday          25            10   \n",
       "25  26   while  2023-10-26         Thursday          26            10   \n",
       "26  27   while  2023-10-27           Friday          27            10   \n",
       "27  28   while  2023-10-28         Saturday          28            10   \n",
       "28  29   while  2023-10-29           Sunday          29            10   \n",
       "29  30   while  2023-10-30           Monday          30            10   \n",
       "30  31   while  2023-10-31          Tuesday          31            10   \n",
       "31  32  repeat  2023-10-01           Sunday           1            10   \n",
       "32  33  repeat  2023-10-02           Monday           2            10   \n",
       "33  34  repeat  2023-10-03          Tuesday           3            10   \n",
       "34  35  repeat  2023-10-04        Wednesday           4            10   \n",
       "35  36  repeat  2023-10-05         Thursday           5            10   \n",
       "36  37  repeat  2023-10-06           Friday           6            10   \n",
       "37  38  repeat  2023-10-07         Saturday           7            10   \n",
       "38  39  repeat  2023-10-08           Sunday           8            10   \n",
       "39  40  repeat  2023-10-09           Monday           9            10   \n",
       "40  41  repeat  2023-10-10          Tuesday          10            10   \n",
       "41  42  repeat  2023-10-11        Wednesday          11            10   \n",
       "42  43  repeat  2023-10-12         Thursday          12            10   \n",
       "43  44  repeat  2023-10-13           Friday          13            10   \n",
       "44  45  repeat  2023-10-14         Saturday          14            10   \n",
       "45  46  repeat  2023-10-15           Sunday          15            10   \n",
       "46  47  repeat  2023-10-16           Monday          16            10   \n",
       "47  48  repeat  2023-10-17          Tuesday          17            10   \n",
       "48  49  repeat  2023-10-18        Wednesday          18            10   \n",
       "49  50  repeat  2023-10-19         Thursday          19            10   \n",
       "50  51  repeat  2023-10-20           Friday          20            10   \n",
       "51  52  repeat  2023-10-21         Saturday          21            10   \n",
       "52  53  repeat  2023-10-22           Sunday          22            10   \n",
       "53  54  repeat  2023-10-23           Monday          23            10   \n",
       "54  55  repeat  2023-10-24          Tuesday          24            10   \n",
       "55  56  repeat  2023-10-25        Wednesday          25            10   \n",
       "56  57  repeat  2023-10-26         Thursday          26            10   \n",
       "57  58  repeat  2023-10-27           Friday          27            10   \n",
       "58  59  repeat  2023-10-28         Saturday          28            10   \n",
       "59  60  repeat  2023-10-29           Sunday          29            10   \n",
       "60  61  repeat  2023-10-30           Monday          30            10   \n",
       "61  62  repeat  2023-10-31          Tuesday          31            10   \n",
       "62  63    loop  2023-10-01           Sunday           1            10   \n",
       "63  64    loop  2023-10-02           Monday           2            10   \n",
       "64  65    loop  2023-10-03          Tuesday           3            10   \n",
       "65  66    loop  2023-10-04        Wednesday           4            10   \n",
       "66  67    loop  2023-10-05         Thursday           5            10   \n",
       "67  68    loop  2023-10-06           Friday           6            10   \n",
       "68  69    loop  2023-10-07         Saturday           7            10   \n",
       "69  70    loop  2023-10-08           Sunday           8            10   \n",
       "70  71    loop  2023-10-09           Monday           9            10   \n",
       "71  72    loop  2023-10-10          Tuesday          10            10   \n",
       "72  73    loop  2023-10-11        Wednesday          11            10   \n",
       "73  74    loop  2023-10-12         Thursday          12            10   \n",
       "74  75    loop  2023-10-13           Friday          13            10   \n",
       "75  76    loop  2023-10-14         Saturday          14            10   \n",
       "76  77    loop  2023-10-15           Sunday          15            10   \n",
       "77  78    loop  2023-10-16           Monday          16            10   \n",
       "78  79    loop  2023-10-17          Tuesday          17            10   \n",
       "79  80    loop  2023-10-18        Wednesday          18            10   \n",
       "80  81    loop  2023-10-19         Thursday          19            10   \n",
       "81  82    loop  2023-10-20           Friday          20            10   \n",
       "82  83    loop  2023-10-21         Saturday          21            10   \n",
       "83  84    loop  2023-10-22           Sunday          22            10   \n",
       "84  85    loop  2023-10-23           Monday          23            10   \n",
       "85  86    loop  2023-10-24          Tuesday          24            10   \n",
       "86  87    loop  2023-10-25        Wednesday          25            10   \n",
       "87  88    loop  2023-10-26         Thursday          26            10   \n",
       "88  89    loop  2023-10-27           Friday          27            10   \n",
       "89  90    loop  2023-10-28         Saturday          28            10   \n",
       "90  91    loop  2023-10-29           Sunday          29            10   \n",
       "91  92    loop  2023-10-30           Monday          30            10   \n",
       "92  93    loop  2023-10-31          Tuesday          31            10   \n",
       "\n",
       "    year_number  \n",
       "0          2023  \n",
       "1          2023  \n",
       "2          2023  \n",
       "3          2023  \n",
       "4          2023  \n",
       "5          2023  \n",
       "6          2023  \n",
       "7          2023  \n",
       "8          2023  \n",
       "9          2023  \n",
       "10         2023  \n",
       "11         2023  \n",
       "12         2023  \n",
       "13         2023  \n",
       "14         2023  \n",
       "15         2023  \n",
       "16         2023  \n",
       "17         2023  \n",
       "18         2023  \n",
       "19         2023  \n",
       "20         2023  \n",
       "21         2023  \n",
       "22         2023  \n",
       "23         2023  \n",
       "24         2023  \n",
       "25         2023  \n",
       "26         2023  \n",
       "27         2023  \n",
       "28         2023  \n",
       "29         2023  \n",
       "30         2023  \n",
       "31         2023  \n",
       "32         2023  \n",
       "33         2023  \n",
       "34         2023  \n",
       "35         2023  \n",
       "36         2023  \n",
       "37         2023  \n",
       "38         2023  \n",
       "39         2023  \n",
       "40         2023  \n",
       "41         2023  \n",
       "42         2023  \n",
       "43         2023  \n",
       "44         2023  \n",
       "45         2023  \n",
       "46         2023  \n",
       "47         2023  \n",
       "48         2023  \n",
       "49         2023  \n",
       "50         2023  \n",
       "51         2023  \n",
       "52         2023  \n",
       "53         2023  \n",
       "54         2023  \n",
       "55         2023  \n",
       "56         2023  \n",
       "57         2023  \n",
       "58         2023  \n",
       "59         2023  \n",
       "60         2023  \n",
       "61         2023  \n",
       "62         2023  \n",
       "63         2023  \n",
       "64         2023  \n",
       "65         2023  \n",
       "66         2023  \n",
       "67         2023  \n",
       "68         2023  \n",
       "69         2023  \n",
       "70         2023  \n",
       "71         2023  \n",
       "72         2023  \n",
       "73         2023  \n",
       "74         2023  \n",
       "75         2023  \n",
       "76         2023  \n",
       "77         2023  \n",
       "78         2023  \n",
       "79         2023  \n",
       "80         2023  \n",
       "81         2023  \n",
       "82         2023  \n",
       "83         2023  \n",
       "84         2023  \n",
       "85         2023  \n",
       "86         2023  \n",
       "87         2023  \n",
       "88         2023  \n",
       "89         2023  \n",
       "90         2023  \n",
       "91         2023  \n",
       "92         2023  "
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.set_option('display.max_rows', None)\n",
    "\n",
    "_, df = dataframe_query(conn, 'SELECT * FROM dates')\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "1d522b75-7266-4d69-9fc7-dece394b0240",
   "metadata": {},
   "outputs": [],
   "source": [
    "cursor.close()\n",
    "conn.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "de213df6-8ead-4d7f-9f5f-21516fa046c2",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.9.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
