Как захватить одно исключение несколько раз в попытке, кроме блока при загрузке CSV в базу данных - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь загрузить CSV-файл в Mysql. Файл содержит миллион записей, поэтому я делаю пакетные вставки по 1000. Я использую python библиотеки sqlalchemy и py mysql. После первой пакетной вставки я получаю сообщение об ошибке

py mysql .err.InternalError) (1366, «Неверное значение строки: '\ xC2 \ x83 \ xC2 \ xB7 \ xC3 \ xA5 ...» '

для столбца' FHCNM 'в строке 50. Я хотел пропустить этот конкретный пакет и вставить оставшиеся партии. Я делал это с помощью блоков try..except..finally в python. Здесь я Я получаю одну и ту же ошибку (py mysql .err.InternalError) в разных пакетах. Как обрабатывать одно исключение несколько раз? Прямо сейчас я пытаюсь как

def functnname():
   try:
         #my code to insert data to mysql
   except:
         #to handle my error first time
         pass
   finally:
         #continue with next batch insertions
   return
try:
   functnname()
except:
   #to handle my error second time
finally:
    functnname()

Я пытаюсь вот так Я не знаю, работает ли это. Любой более эффективный способ был бы оценен. А также, как обработать вышеупомянутую ошибку во-первых и как вставить неудачные партии впоследствии. Python 3.x.

1 Ответ

0 голосов
/ 02 мая 2020

Было бы трудно сделать код python без вставки каждого элемента по отдельности, но это сильно повредит вашей производительности. Используйте функции mysql для игнорирования / обработки ошибок при пакетной вставке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...