Найти - Пользователи
Полная версия: SQLAlchemy - показать лишь одну запись, на которой валится запрос?
Начало » Базы данных » SQLAlchemy - показать лишь одну запись, на которой валится запрос?
1
Master_Sergius
Здравствуйте.
Интересная задача имеется: в автоматическом режиме собираются данные за несколько минут, а потом пачкой обрабатываются и вставляются в базу MySQL. Иногда количество записей может превышать 200, а то и больше. При этом бывает, что какая-то запись испорчена и вся пачка не вставляется, при таком логе найти ту запись сложно:

 ... (part of Traceback is skipped) ...
"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 948, in execute\n    return meth(self, multiparams, params)\n
... (part of Traceback is skipped) ...
File \"/usr/local/lib/python3.6/site-packages/mysql/connector/connection.py\", line 396, in _handle_result\n    raise errors.get_exception(packet)\nsqlalchemy.exc.DataError: (mysql.connector.errors.DataError) 1264 (22003): Out of range value for column 'tlm_1' at row 722
... Здесь идет длинный запрос ...

Структура запроса: INSERT INTO <таблица> <поля> VALUES (<запись 1>, <запись 2>, … )
Имеется ли какая-то возможность логировать/выделить проблемную запись со всего списка?
py.user.next
Master_Sergius
Имеется ли какая-то возможность логировать/выделить проблемную запись со всего списка?
Вообще, по этой же причине принято писать код так, чтобы на одной строке стоял только один оператор. Тогда при ошибке и указании строки с ошибкой (в отладчике или при компиляции) сразу указывается оператор, в котором произошла ошибка. Так что надо попробовать разбить на строки команду, чтобы “записи” стояли по одной записи на одной строке.

Если же это невозможно, а запрос должен быть только один, то можно попробовать переопределить исключение, которое выпадает, чтобы в новом варианте исключения, сохранялась более подробная информация.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB