import logging import math import os import mysql.connector from dotenv import load_dotenv load_dotenv() logger = logging.getLogger(__name__) logging.basicConfig( level=logging.INFO, format='%(asctime)s %(levelname)s [%(name)s]: %(message)s' ) MYSQL_HOST = os.environ.get('MYSQL_HOST') MYSQL_USER = os.environ.get('MYSQL_USER') MYSQL_PASSWORD = os.environ.get('MYSQL_PASSWORD') ROW_COUNT = int(os.environ.get('ROW_COUNT', 100)) BATCH_SIZE = int(os.environ.get('BATCH_SIZE', 10)) def main(): try: logger.info(f'Starting insert_test_data for {ROW_COUNT} rows') row = "('xavtest', 1, 2, 3, NULL, 'USD', 0.100000, 4, '2024-01-01', '2025-01-21', 111111111, 5, 6, 'ISRC', 'Xavtest', 1, 10.000000, 10.000000, 0.000000, NULL, 'PS', NULL, 10, 15.000000, 5.000000, NULL, NULL, 'an_actual_statement_no', 0)" query = f'INSERT INTO sales_file_delivery.dig_sales_testfile_abacus_test (batch_id, statement_id, vendor_id, customer_master_master_id, subdistributor, original_currency_iso, activity_rate, country_id, start_date, date, upc, cd, track_id, isrc, track_name, qty, unit_price, total, wht, configuration, trans_type, trans_subtype, retail_price, original_price, discount, phys_ppd, video_id, actual_statement_no, sap_exclude) VALUES {row}' batch_size = BATCH_SIZE if ROW_COUNT > BATCH_SIZE else ROW_COUNT batch_count = int(math.floor(ROW_COUNT / batch_size)) cnx = mysql.connector.connect( host=MYSQL_HOST, port=3306, user=MYSQL_USER, password=MYSQL_PASSWORD) cur = cnx.cursor() logger.info(f'Inserting {batch_count} batches of {batch_size} rows') for i in range(batch_count): logger.info(f'Inserting batch #{i}') q = query for j in range(batch_size - 1): q = f'{q}, {row}' cur.execute(q) cnx.commit() logger.info('Inserted batch') cur.close() cnx.close() logger.info('Inserted all batches') except Exception as e: logger.error(f'Error in insert_test_data: {e}') raise e if __name__ == '__main__': main()