def load_awarded(cnx, file_name): pk_atm_main, tender_case_no, root_element = eta.init(file_name) if root_element is None \ or pk_atm_main is None or tender_case_no is None \ or pk_atm_main == '' or tender_case_no == '': logger.error('Fail to extract data from file: ' + file_name) return pk = {'pk_atm_main': pk_atm_main, 'tender_case_no': tender_case_no} logger.info('Updating database (pkAtmMain: {}, tenderCaseNo: {})'.format(pk_atm_main, tender_case_no)) try: cur = cnx.cursor(buffered=True) data = eta.get_organization_info_dic(root_element) data.update(pk) cur.execute(gen_insert_sql('organization_info', data)) data = eta.get_procurement_info_dic(root_element) data.update(pk) cur.execute(gen_insert_sql('procurement_info', data)) data = eta.get_tender_info_dic(root_element) for tender in data.values(): tender.update(pk) cur.execute(gen_insert_sql('tender_info', tender)) data = eta.get_tender_award_item_dic(root_element) for item in data.values(): for tender in item.values(): tender.update(pk) cur.execute(gen_insert_sql('tender_award_item', tender)) data = eta.get_evaluation_committee_info_list(root_element) for committee in data: committee.update(pk) cur.execute(gen_insert_sql('evaluation_committee_info', committee)) data = eta.get_award_info_dic(root_element) data.update(pk) cur.execute('SET NAMES utf8mb4') cur.execute(gen_insert_sql('award_info', data)) cnx.commit() except mysql.connector.Error as e: outstr = 'Fail to update database (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format(pk_atm_main, tender_case_no, e) logger.warn(outstr) with open('load.err', 'a', encoding='utf-8') as err_file: err_file.write(outstr) except AttributeError as e: outstr = 'Corrupted content. Update skipped (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format(pk_atm_main, tender_case_no, e) logger.warn(outstr) with open('load.err', 'a', encoding='utf-8') as err_file: err_file.write(outstr)
def load_awarded(cnx_info, file_name): pk_atm_main, tender_case_no, root_element = eta.init(file_name) if root_element is None \ or pk_atm_main is None or tender_case_no is None \ or pk_atm_main == '' or tender_case_no == '': logger.error('Fail to extract data from file: ' + file_name) return pk = {'pk_atm_main': pk_atm_main, 'tender_case_no': tender_case_no} logger.info('Updating database (pkAtmMain: {}, tenderCaseNo: {})'.format( pk_atm_main, tender_case_no)) try: cnx = mysql.connector.connect(**cnx_info) cnx.autocommit = False cur = cnx.cursor(buffered=True) data = eta.get_organization_info_dic(root_element) data.update(pk) cur.execute(gen_insert_sql('organization_info', data)) data = eta.get_procurement_info_dic(root_element) data.update(pk) cur.execute(gen_insert_sql('procurement_info', data)) data = eta.get_tender_info_dic(root_element) for tender in data.values(): tender.update(pk) cur.execute(gen_insert_sql('tender_info', tender)) data = eta.get_tender_award_item_dic(root_element) for item in data.values(): for tender in item.values(): tender.update(pk) cur.execute(gen_insert_sql('tender_award_item', tender)) data = eta.get_evaluation_committee_info_list(root_element) for committee in data: committee.update(pk) cur.execute(gen_insert_sql('evaluation_committee_info', committee)) data = eta.get_award_info_dic(root_element) data.update(pk) cur.execute('SET NAMES utf8mb4') cur.execute(gen_insert_sql('award_info', data)) cnx.commit() except mysql.connector.Error as e: if e.errno == errorcode.ER_ACCESS_DENIED_ERROR: logger.error("Something is wrong with your user name or password.") elif e.errno == errorcode.ER_BAD_DB_ERROR: logger.error("Database does not exist.") else: outstr = 'Fail to update database (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format( pk_atm_main, tender_case_no, e) logger.warn(outstr) with open('load.err', 'a', encoding='utf-8') as err_file: err_file.write(outstr) except AttributeError as e: outstr = 'Corrupted content. Update skipped (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format( pk_atm_main, tender_case_no, e) logger.warn(outstr) with open('load.err', 'a', encoding='utf-8') as err_file: err_file.write(outstr) else: cnx.close()
def load_awarded(cnx_info, file_name): pk_atm_main, tender_case_no, root_element = eta.init(file_name) if root_element is None \ or pk_atm_main is None or tender_case_no is None \ or pk_atm_main == '' or tender_case_no == '': logger.error('Fail to extract data from file: ' + file_name) return pk = {'pk_atm_main': pk_atm_main, 'tender_case_no': tender_case_no} logger.info('Updating database (pkAtmMain: {}, tenderCaseNo: {})'.format( pk_atm_main, tender_case_no)) try: cnx = psycopg2.connect(**cnx_info) cnx.autocommit = False cur = cnx.cursor() data = eta.get_organization_info_dic(root_element) data.update(pk) cur.execute(gen_insert_sql('organization_info', data)) data = eta.get_procurement_info_dic(root_element) data.update(pk) cur.execute(gen_insert_sql('procurement_info', data)) data = eta.get_tender_info_dic(root_element) for tender in data.values(): tender.update(pk) cur.execute(gen_insert_sql('tender_info', tender)) data = eta.get_tender_award_item_dic(root_element) for item in data.values(): for tender in item.values(): tender.update(pk) cur.execute(gen_insert_sql('tender_award_item', tender)) data = eta.get_evaluation_committee_info_list(root_element) for committee in data: committee.update(pk) cur.execute(gen_insert_sql('evaluation_committee_info', committee)) data = eta.get_award_info_dic(root_element) data.update(pk) cur.execute(gen_insert_sql('award_info', data)) cnx.commit() except psycopg2.Error as e: logger.error(e) outstr = 'Fail to update database (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format( pk_atm_main, tender_case_no, e) logger.warn(outstr) with open('load.err', 'a', encoding='utf-8') as err_file: err_file.write(outstr) cnx.rollback() except AttributeError as e: outstr = 'Corrupted content. Update skipped (pkAtmMain: {}, tenderCaseNo: {})\n\t{}'.format( pk_atm_main, tender_case_no, e) logger.warn(outstr) with open('load.err', 'a', encoding='utf-8') as err_file: err_file.write(outstr) else: cnx.close()