def create_csv_cuotas_cobradas_file( sql_select_csv_fn, output_csv_fn, columns_name_to_filter, db_engine, active_wallet_result, cartera_activa_table_name="cartera_activa"): msg = f"Reading {sql_select_csv_fn} ..." try: logger.info(msg) sql_file_csv = open( os.path.join(settings.MYSQL_SQL_DIR, sql_select_csv_fn)) logger.info(f"{msg} Done!") d = date.today() offset = BMonthEnd() date2 = str(offset.rollforward(d) - BDay(2))[:-9] date1 = str(offset.rollback(d) - BDay(1))[:-9] data = sql_file_csv.read().replace('$1', date1).replace('$2', date2) msg = f"Executing pandas.read_sql for {sql_select_csv_fn} ..." logger.info(msg) result = pandas.read_sql(sql=text( data.format(cartera_activa_table_name)), con=db_engine) logger.info(f"{msg} Done!") pattern = re.compile('[^a-zA-Z0-9\-._: \.\(\)\/]') msg = f"Removing characters '{pattern}' by '_' for {sql_select_csv_fn} data ..." logger.info(msg) for columns_name in columns_name_to_filter: result[columns_name] = result[columns_name].str.replace( pattern, '_') logger.info(f"{msg} Done!") fn = f'{output_csv_fn}_{datetime.datetime.now().strftime("%m-%d-%y-%H%M%S")}.zip' msg = f"Writing csv file {fn}... " logger.info(msg) result_csv = result.to_csv(header=False, decimal=',', index=False, encoding='utf-8-sig') zipbuff = io.BytesIO() with zipfile.ZipFile(zipbuff, "a", zipfile.ZIP_DEFLATED, False) as zip_file: zip_file.writestr(f"results_{output_csv_fn}.csv", result_csv.encode('utf-8-sig')) result = None result_csv = None gc.collect() active_wallet_result.save(fn, ContentFile(zipbuff.getvalue())) logger.info(f"{msg} Done!") except Exception as error: msg = f"{msg} Fail!: {error}" raise Exception(msg)
def find_last_BD_MonthEnd(date): offset = BMonthEnd() return offset.rollback(date)