Получить ошибки печати неправильно SQL заявление на стандартный вывод python - PullRequest
0 голосов
/ 16 апреля 2020

С помощью следующей команды я запускаю сценарий python, который печатает оператор вставки SQL в стандартный вывод: xzcat ../file.txt|grep –i ‘some text’|python3.7 pythonscriptname|mysql –h host –u username –ppassword databasename

Я хочу перехватывать ошибки, если я печатаю инструкцию SQL с неверным синтаксис или, например, таблица, которая не существует. Я не хочу использовать mysql .connector или mysqldb для вставки данных или ошибок перехвата, поскольку печать оператора вставки в стандартный вывод выполняется быстрее.

У меня следующий код:

try: 
     sql="INSERT IGNORE INTO "+str(wrongtabelname)+" VALUES"+values+";"                          
     print(sql)
except: (SQLError, Exception, NameError,IndexError, TypeError, ValueError,ProgrammingError, Attrib
uteError, KeyError, BrokenPipeError,IOError, OSError, ConnectionAbortedError, ConnectionRefusedError, ConnectionError) as
 e:

Этот код не улавливает ошибок при выполнении кода с неправильным оператором SQL. Кто-нибудь знает, как отлавливать ошибки?

1 Ответ

0 голосов
/ 16 апреля 2020

Вы передаете xzcat на python на mysql.

Единственный процесс в этой цепочке, который когда-либо увидит результат выполнения запроса SQL, - это клиент mysql.

Если вы хотите, чтобы вывод mysql вернулся в python, рассмотрите возможность вызова mysql изнутри вашего python скрипта. Для этого используйте модуль subprocess.

...