Я отвечаю на свой вопрос, ребята ...
Я решил вышеупомянутую историю пользователя, используя комбинацию байтов для декодирования utf-8 и shlex.split()
.
Если список, созданный shlex.split()
, не пуст, прервать развертывание.
sub = subprocess.run(["sqlcmd", "-S", .....], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
decoded_stdout = sub.stdout.decode('utf-8')
stdout_list = shlex.split(decoded_stdout)
if stdout_list != 0:
print('Don't do the deployment')
else:
print('do the deployment')
Это выходные данные и журнал.
2020-05-02 17:44:52,874:INFO:395:Going to invoke sqlcmd cli to deploy dbo.uspFindProducts_SP.StoredProcedure.sql...
2020-05-02 17:44:53,159:INFO:399:Msg 156, Level 15, State 1, Server IDEA-PC\SQLEXPRESS, Procedure uspFindProducts_SP, Line 18
Incorrect syntax near the keyword 'AS'.
2020-05-02 17:44:53,159:INFO:403:Something failed and we have got a non-zero return code
Теперь ошибка красиво декодируется в utf-8, а строка ошибки разделяется на список с помощью shlex.split()
. Всем хорошего дня! :)