import sys import tracemalloc import mysql.connector # Begin tracking memory allocation tracemalloc.start() DB_HOST = "127.0.0.1" DB_PORT = "3306" DB_USER = "tester" DB_PASSWORD = "tester" DB_NAME = "switch_control" class SqlWrapper(): """class wrapping up acces and query functionality to a mysql db""" def __init__(self, db_ip, db_port, db_user, db_password, db_name): """setup database connection""" try: self.connection = mysql.connector.connect( user=db_user, password=db_password, host=db_ip, port=db_port, database=db_name, use_pure=False ) except mysql.connector.Error as err: print("Failed to connect to database: " + str(err)) sys.exit(1) def __enter__(self): return self def select_cursor(self, query, values=None): """perform select and return the cursor caller must close cursor""" cursor = self.connection.cursor(prepared=True) cursor.execute(query, values) return cursor def select(self, query, values=None): """execute an select query""" cursor = self.select_cursor(query, values) data = cursor.fetchall() cursor.close() return data def __exit__(self, exc_type, exc_value, traceback): """close connection and on exit""" if self.connection.is_connected(): self.connection.close() def get_sql_wrapper(): """ get an database connection """ return SqlWrapper(DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME) print("\r\n") print("######## STARTING ########") print("\r\n") from datetime import datetime while True: with get_sql_wrapper() as sql: # print(datetime.now()) rawdata = sql.select("SELECT * FROM controllers", []) rawdata = None snapshot = tracemalloc.take_snapshot() top_stats = snapshot.statistics('lineno') target = "mysql/connector/connection_cext.py" target_line = 506 for stat in top_stats: frame = stat.traceback[0] if target in frame.filename and frame.lineno == target_line: print(stat)