"""Utilities for interacting with the QA MySQL database.""" from os import getenv from dotenv import find_dotenv from dotenv import load_dotenv from mysql.connector import connect from mysql.connector import ProgrammingError load_dotenv(find_dotenv()) def execute_query(query): """Execute a query.""" db_host = getenv('QA_MYSQL_HOST', 'qa.db.qaorch.com') db_port = getenv('QA_MYSQL_PORT', 3306) db_user = getenv('QA_MYSQL_USER') db_pass = getenv('QA_MYSQL_PASSWORD') assert db_user, 'QA_MYSQL_USER must be set' assert db_pass, 'QA_MYSQL_PASSWORD must be set' connection = None cursor = None try: connection = connect( host=db_host, port=db_port, user=db_user, password=db_pass, database='art_relations' ) cursor = connection.cursor(buffered=True) cursor.execute(query) return cursor.fetchone() except ProgrammingError as e: print(f'\n++++++++++++++++++\n ERROR: {e.msg} \n++++++++++++++++++\n') raise e finally: if cursor: cursor.close() if connection: connection.close()