def get_report_by_name(report_name, conn, execution_id=None): cursor = conn.cursor() sql_report_by_name = "select id, name, report_query, mode, file_name, separator from Report where name = '%s';" sql_report_columns_by_id = "select sql_name, business_name, is_used_for_compare, is_business_key " \ "from Report_Columns where report_id = '%s';" # Fetch report information from persistence print "Info : Retrieving report from the database " + now() query_result = cursor.execute(sql_report_by_name % report_name).fetchone() if not query_result: print("Error : report with name '%s' not found" % report_name) exit(1) report_id = query_result["id"] report_name = query_result["name"] report_query = query_result["report_query"] report_mode = query_result["mode"] report_file_name = query_result["file_name"] report_separator = query_result["separator"] # Fetch column definitions query_result = cursor.execute(sql_report_columns_by_id % report_id).fetchall() columns_mapping = {} columns = [] for row in query_result: columns.append(row["sql_name"]) columns_mapping[row["sql_name"]] = { "business_name": row["business_name"] } columns_mapping[row["sql_name"]]["is_used_for_compare"] = str( row["is_used_for_compare"]) columns_mapping[row["sql_name"]]["is_business_key"] = str( row["is_business_key"]) report = Report(report_name, report_query, report_mode, columns, columns_mapping, report_separator, report_file_name, report_id) # Retrieve last Execution or the one requested bw user if not execution_id: execution = get_execution_by_report_id(report_id, conn) else: execution = get_execution_by_report_id(report_id, conn, execution_id) if execution: report.execution = execution else: print "Warning : empty exectution" report.execution = [] print "Info : Retrieval done " + now() return report