Удалить копию из строки ошибки и перезапустить процесс - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть try/except ниже, который копирует файл .txt в таблицу с использованием разделителя ;. Мне бы хотелось, чтобы, когда в этом файле была обнаружена ошибка и была предотвращена вставка в таблицу, строка была удалена и процесс перезапущен.

Но при текущем способе он просто удаляет строку и завершает весь процесс, l oop не продолжается. Любые предложения?

regex = r'CONTEXT:  COPY tbl_name, line (.*): "'

for msl in files:

    try:

        if msl == '/etc/data/file.txt':

            with open(msl, 'r') as line: # read
                print("[INFO] Inserting data in table: tbl_name")
                cur.copy_from(line, 'tbl_name', sep=';') # insert and delimiter `;`
            conn.commit() # commit execution
            print("[OK] Inserted data in table: tbl_name")

        else:
            print("[ERROR] Not found file")

    except Exception as e:
        conn.rollback()
        error = re.findall(regex, str(e))
        os.system('''sed -e '{}d' {}'''.format(error[0],msl))
        print("[INFO] Action taken to delete the line: {}".format(error[0]))
        pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...