personal finance control engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

675 lines
26 KiB

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"insert_query = \"INSERT IGNORE INTO default.TRANSACTION (ID, TDATE, ACCOUNT_ID, MEMO, COUNTRY, OUTFLOW, INFLOW, OWNER_ID, INSTALLMENT_NR, INSTALLMENT_TT, BILL, CREATED, UPDATED) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s );\""
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def find_owner(queried_name: str):\n",
" from mysql.connector import connect, Error\n",
"\n",
" query = \"SELECT * FROM OWNER\"\n",
" result = []\n",
"\n",
" try:\n",
" with connect(\n",
" host=\"127.0.0.1\",\n",
" user=\"root\",\n",
" password=\"pleasehashapasswordomg\",\n",
" database=\"default\",\n",
" ) as connection:\n",
" print(\"[robopato] CONNECTED!\", connection)\n",
" with connection.cursor() as cursor:\n",
" cursor.execute(query)\n",
" query_result = cursor.fetchall()\n",
"\n",
" for item in query_result:\n",
" if item[1].lower() == queried_name:\n",
" result.append(item[0])\n",
" result.append(item[1])\n",
" print(\"[robopato] \", result)\n",
" print(\"[robopato] DONE!\")\n",
" except Error as e:\n",
" print(e)\n",
" finally:\n",
" connection.close()\n",
"\n",
" return result if result else None"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Tests\n",
"# find_owner(\"daniel\")[0]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def create_lists(file_name: str, bill: str):\n",
" import re\n",
"\n",
" # Open the text file\n",
" with open(file_name, \"r\", encoding=\"latin\") as file:\n",
" # Read the contents of the file\n",
" contents = file.readlines()\n",
"\n",
" # Define the regex patterns\n",
" owner_pattern = r\"\\s\\d\\s?-\\s?([A-Z]+)\"\n",
" line_pattern = r\"\\d{2}\\.\\d{2}\\.\\d{4}.{23}.{14}.{2}\\s*-?\\d*\\.?\\d+,\\d{2}\\s*\\d+,\\d{2}\"\n",
" payment_pattern = (\n",
" r\"\\d{2}\\.\\d{2}\\.\\d{4}PGTO.*200211(\\s*-?\\d*\\.?\\d+,\\d{2})(\\s*\\d+,\\d{2})\"\n",
" )\n",
" partial_invoice_line_pattern = (\n",
" r\"\\d{2}\\/\\d{2}.{27}.{16}.{2}\\s+\\s*-?\\d*\\.?\\d+,\\d{2}\\s*\\d+,\\d{2}\"\n",
" )\n",
"\n",
" # Lists\n",
" current_list = None\n",
" owner_list = []\n",
" result = {}\n",
"\n",
" line_counter = 0\n",
" isPartial = True\n",
"\n",
" # Find Owners\n",
" for line in contents:\n",
" line_counter = line_counter + 1\n",
"\n",
" found_owners = re.findall(owner_pattern, line)\n",
" if found_owners:\n",
" for owner_name in found_owners:\n",
" print(owner_name)\n",
" list_name = f\"list_{owner_name.lower()}\"\n",
" owner_list.append(list_name)\n",
" result[list_name] = {}\n",
" result[list_name][\"owner_name\"] = owner_name\n",
" result[list_name][\"owner_id\"] = find_owner(owner_name.lower())[0]\n",
" result[list_name][\"bill\"] = bill\n",
" print(\"[robopato] owner_name\", result[list_name][\"owner_name\"])\n",
" print(\"[robopato] owner_id\", result[list_name][\"owner_id\"])\n",
"\n",
" print(\"[robopato] linhas: \", line_counter)\n",
"\n",
" # Treat and create transaction lists\n",
" counter2 = 0\n",
" for line in contents:\n",
" counter2 = counter2 + 1\n",
"\n",
" if re.search(owner_pattern, line):\n",
" found_owner = re.search(owner_pattern, line)\n",
" print(line)\n",
" print(\"found_owner: \", found_owner.group(1).lower())\n",
" owner_list = f\"list_{found_owner.group(1).lower()}\"\n",
" current_list = owner_list\n",
" result[current_list][\"tlist\"] = []\n",
"\n",
" else:\n",
" if re.match(payment_pattern, line):\n",
" result[current_list][\"tlist\"].append(line)\n",
" elif re.match(line_pattern, line) or re.match(\n",
" partial_invoice_line_pattern, line\n",
" ):\n",
" result[current_list][\"tlist\"].append(line)\n",
"\n",
" # Check file pattern\n",
" if current_list:\n",
" sample = result[current_list][\"tlist\"][1]\n",
" print(\"sample: \" + sample)\n",
" if re.search(line_pattern, sample):\n",
" isPartial = False\n",
"\n",
" for listObj in result:\n",
" result[listObj][\"isPartial\"] = isPartial\n",
"\n",
" print(\"[robopato] create_lists: DONE\")\n",
"\n",
" return result"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# Test\n",
"# create_lists(\"./documents/OUROCARD_VISA_INFINITE-Mar_26.txt\", \"Mar-2026\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def build_insert(input_dict: dict, account: int):\n",
" from datetime import date, datetime\n",
" from decimal import Decimal\n",
" import re\n",
" import hashlib\n",
"\n",
" insert_bulk = []\n",
"\n",
" # RegEx Patterns\n",
" line_group_pattern = r\"(?P<day>\\d{2})\\.(?P<month>\\d{2})\\.(?P<year>\\d{4})(?:(?P<p_memo>.+PARC (?P<p_nr>\\d+.)\\/(?P<p_tt>\\d+)\\s.{12})|(?P<memo>.{37}))(?P<country>.{2})(?P<outflow>\\s*-?\\d*\\.?\\d+,\\d{2})(?P<inflow>\\s*\\d*\\.?\\d+,\\d{2})\"\n",
" partial_invoice_group_pattern = r\"(?P<day>\\d{2})\\/(?P<month>\\d{2})(?:(?P<p_memo>.+PARC (?P<p_nr>\\d{2})\\/(?P<p_tt>\\d{2}).{15})|(?P<memo>.{43}))(?P<country>.{2})(?P<outflow>\\s+\\s*-?\\d*\\.?\\d+,\\d{2})(?P<inflow>\\s*\\d+,\\d{2})\"\n",
" payment_pattern = r\"(?P<day>\\d{2})\\.(?P<month>\\d{2})\\.(?P<year>\\d{4})(?P<memo>PGTO DEBITO CONTA).*200211(?P<inflow>\\s*-?\\d*\\.?\\d+,\\d{2})(?P<outflow>\\s*\\d+,\\d{2})\"\n",
"\n",
" for key in input_dict:\n",
" if input_dict[key][\"isPartial\"]:\n",
" pattern_to_use = partial_invoice_group_pattern\n",
" else:\n",
" pattern_to_use = line_group_pattern\n",
"\n",
" for item in input_dict[key][\"tlist\"]:\n",
" # check if it is an invoice payment\n",
" matches = re.match(payment_pattern, item)\n",
" if matches:\n",
" tTdate = str(\n",
" date(\n",
" int(matches.group(\"year\")),\n",
" int(matches.group(\"month\")),\n",
" int(matches.group(\"day\")),\n",
" )\n",
" )\n",
" tAccount = account\n",
" tMemo = matches.group(\"memo\")\n",
" tCountry = None\n",
" tOutflow = \"0.00\"\n",
" tInflow = (\n",
" matches.group(\"inflow\")\n",
" .strip()\n",
" .replace(\".\", \"\")\n",
" .replace(\",\", \".\")\n",
" .replace(\"-\", \"\")\n",
" )\n",
" tOwner = input_dict[key][\"owner_id\"]\n",
" tInstallmentNr = None\n",
" tInstallmentTt = None\n",
" tBill = input_dict[key][\"bill\"]\n",
" tCreated = str(datetime.now(tz=None))\n",
" tUpdated = None\n",
" else:\n",
" matches = re.match(pattern_to_use, item)\n",
" tTdate = str(\n",
" date(\n",
" # partial files will not have the year data on transactions\n",
" (\n",
" int(matches.group(\"year\"))\n",
" if pattern_to_use == line_group_pattern\n",
" else datetime.now().year\n",
" ),\n",
" int(matches.group(\"month\")),\n",
" int(matches.group(\"day\")),\n",
" )\n",
" )\n",
"\n",
" tAccount = account\n",
"\n",
" tMemo = (\n",
" matches.group(\"p_memo\")\n",
" if matches.group(\"p_memo\")\n",
" else matches.group(\"memo\")\n",
" )\n",
" tInstallmentNr = (\n",
" int(matches.group(\"p_nr\")) if matches.group(\"p_nr\") else None\n",
" )\n",
" tInstallmentTt = (\n",
" int(matches.group(\"p_tt\")) if matches.group(\"p_tt\") else None\n",
" )\n",
"\n",
" tCountry = matches.group(\"country\")\n",
" tOutflow = (\n",
" matches.group(\"outflow\").strip().replace(\".\", \"\").replace(\",\", \".\")\n",
" )\n",
" tInflow = (\n",
" matches.group(\"inflow\").strip().replace(\".\", \"\").replace(\",\", \".\")\n",
" )\n",
" tOwner = input_dict[key][\"owner_id\"]\n",
" tBill = input_dict[key][\"bill\"]\n",
"\n",
" tCreated = str(datetime.now(tz=None))\n",
" tUpdated = None\n",
"\n",
" preHash = tTdate + tMemo + tOutflow + tInflow\n",
" tId = hashlib.sha256(preHash.encode()).hexdigest()\n",
"\n",
" if matches.group(\"memo\") != \"Saldo Anterior\":\n",
" insert_bulk.append(\n",
" (\n",
" tId,\n",
" tTdate,\n",
" tAccount,\n",
" tMemo.strip(),\n",
" tCountry,\n",
" tOutflow,\n",
" tInflow,\n",
" tOwner,\n",
" tInstallmentNr,\n",
" tInstallmentTt,\n",
" tBill,\n",
" tCreated,\n",
" tUpdated,\n",
" )\n",
" )\n",
"\n",
" return insert_bulk"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Test\n",
"# build_insert(\n",
"# create_lists(\"./documents/OUROCARD_VISA_INFINITE-Mar_26.txt\", \"Mar-2026\"), 2\n",
"# )"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def db_insert(insert_bulk: list[tuple]):\n",
" from mysql.connector import connect, Error\n",
"\n",
" try:\n",
" with connect(\n",
" host=\"127.0.0.1\",\n",
" user=\"root\",\n",
" password=\"pleasehashapasswordomg\",\n",
" database=\"default\",\n",
" ) as connection:\n",
" print(\"CONNECTED!\", connection)\n",
" with connection.cursor() as cursor:\n",
" cursor.executemany(insert_query, insert_bulk)\n",
" connection.commit()\n",
" print(\"DONE!\")\n",
" except Error as e:\n",
" print(e)\n",
" finally:\n",
" connection.close()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# Tests\n",
"# db_insert(\n",
"# build_insert(\n",
"# create_lists(\"./documents/OUROCARD_VISA_INFINITE-Mar_26.txt\", \"Mar-2026\"), 2\n",
"# )\n",
"# )"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"def executor():\n",
"\n",
" from pathlib import Path\n",
"\n",
" file_path = Path(\".\") / \"documents\"\n",
"\n",
" matched_files = file_path.glob(\"OUROCARD*.txt\")\n",
"\n",
" for file in matched_files:\n",
" bill = file.name[:-4][23:]\n",
" db_insert(build_insert(create_lists(file, bill), 2))\n",
"\n",
" print(\"EXECUTOR COMPLETED.\")"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56A5010>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 111\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 08.08.2026CINEMARK BRASIL S A EC SAO PAULO BR 34,00 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C5623750>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 72\n",
" 1-DANIEL O C \n",
"\n",
"found_owner: daniel\n",
"sample: 13/08 PAGUE MENOSA 12 5 DF BR 41,28 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C5623750>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 253\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 13.04.2025CINE PARK SHOPPING GUARA BR 112,50 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 248\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 04.04.2026GOG.com Warsaw PL 28,59 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 201\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 05.08.2025Steam SAO PAULO BR 118,24 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 215\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 07.08.2026CINEMARK BRASIL S.A EC SAO PAULO BR 146,88 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 230\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 01.12.2025AMAZONMKTPLC*KARINAALV SAO PAULO BR -54,27 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 214\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 19.01.2026CINEMARK BRASIL S.A EC SAO PAULO BR 41,04 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 186\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 19.12.2025AMAZONMKTPLC*ARTCLUBSH SAO PAULO BR -285,78 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 203\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 13.06.2025ECB SUDOESTE BRASILIA BR 45,00 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 205\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 22.06.2026UBER *ONE MEMBERSHIP UBSAO PAULO BR -1,93 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 210\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 31.05.2025CINEMARK BRASIL SAO PAULO BR 94,00 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 210\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 19.05.2026BURGER KING BRASILIA BR 68,70 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 235\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 20.04.2025CINEMARK BRASIL SAO PAULO BR 39,33 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 239\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 11.02.2026OBA HORTIFRUTI BRASILIA BR 142,23 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 212\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 15.10.2025GRUPO FARTURA DE HORTI BRASILIA BR 160,43 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 192\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 17.09.2025ZP *CANTINAGOODLANCHEV Brasilia BR 105,00 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 70\n",
" 1-DANIEL O C \n",
"\n",
"found_owner: daniel\n",
"sample: 13/08 MERCADOLIVRE*MERCADOLIVJUNDIAI BR 39,90 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"DANIEL\n",
"[robopato] CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"[robopato] [1, 'Daniel']\n",
"[robopato] DONE!\n",
"[robopato] owner_name DANIEL\n",
"[robopato] owner_id 1\n",
"[robopato] linhas: 188\n",
" 1 - DANIEL O CARVALHO \n",
"\n",
"found_owner: daniel\n",
"sample: 14.08.2025ECB SUDOESTE BRASILIA BR 500,00 0,00\n",
"\n",
"[robopato] create_lists: DONE\n",
"CONNECTED! <mysql.connector.connection_cext.CMySQLConnection object at 0x00000230C56239D0>\n",
"DONE!\n",
"EXECUTOR COMPLETED.\n"
]
}
],
"source": [
"executor()"
]
}
],
"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.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}