LINUX.ORG.RU

Эзотерические сообщения об ошибках Python - как научиться понимать?


0

1

Осваиваю Flask + Peewee. Задача - создание формы, если в форме известный id записи, то её обновление, если нет - то запись новой в базу.

У меня есть несколько NOT NULL полей, видимо, из-за того, что пытаюсь записать NULL туда, ошибка.

Получаю простыню ссылок на модули фреймворка и стандартную ошибку 'NoneType' object is not iterable.

Если бы я такое на перле писал, у меня была бы пара строчек с чётким указанием, какую именно фигню я совершил.

Это все на питоне так страдают, гадая, какая ошибка, или есть не очевидные нубу методы?

★★★★★

Последнее исправление: Shadow (всего исправлений: 1)

тебе отдался backtrace и это намного лучше чем банальное указание на файл и строку.

exception13 ★★★★★
()

А чего гадать? Куда-то надо было передать iterable, а ты передал NoneType. Где именно, указано в той строчке. Скорее всего, неинициализированная переменная.

proud_anon ★★★★★
()
Ответ на: комментарий от Shadow

а что такое iterable?

Говоря просто, это любой объект, для которого определено понятие «вернуть следующий элемент». https://docs.python.org/3/glossary.html#term-iterable

Строки являются iterable. Например:

for s in "Привет": print(s)
Но в твоём случае это не суть важно, хотя скорее всего там у тебя задействован какой-то тип объектов, о котором ты не знаешь. Важно то, что у тебя где-то, скорее всего, программа получает возвращаемое значение из функции, которая не возвращает никакого значения или что-то в этом роде. Надо смотреть, в какую именно переменную попало значение None (это указано в сообщении об ошибке) и где ей в последний раз присваивали значение.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

в какую именно переменную ... это указано в сообщении об ошибке

Гыгы. Гы. Угадай, почему я написал сюда.

Я понял. Это проблема слабо знакомых библиотек. Я каким-то образом запутал WTForms, поэтому не могу понять, что произошло.

Shadow ★★★★★
() автор топика

Это все на питоне так страдают, гадая, какая ошибка, или есть не очевидные нубу методы?

Да ладно, в питоне очень внятный трэйсбэк при ошибке выдаётся.

yvv ★★☆
()

Если бы я такое на перле писал, у меня была бы пара строчек с чётким указанием, какую именно фигню я совершил.

А питонисты скажут то же самое, только perl в фразе заменят на python.

i-rinat ★★★★★
()

Если бы я такое на перле писал, у меня была бы пара строчек с чётким указанием, какую именно фигню я совершил.

Подтверждаю. Вот что выдает Perl в подобной ситуации:

Hi, fellow! There are some NOT NULL fields, but you're trying to store NULL therein. 
Take a look at line 57 in db.pl and lines 40-45,49 in forms.pl.
Thank you for staying with Perl.

omich
()
Ответ на: комментарий от proud_anon

Я всё уже нашёл, я пока не разобрался, почему валидатор формы лезет в динамический select и проверяет choises, а потом его что-то не устраивает. Я пока в целом пытаюсь освоить, пока просто проверяю is_submitted.

Shadow ★★★★★
() автор топика
Ответ на: комментарий от Shadow

'NoneType' object is not iterable.

Скорее всего, у тебя в for передаётся None.

Вот не надо фантазировать.

>>> for i in None:
...   print i
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable
>>>
tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Это был не баг. WTForms паниковал на моменте, где проверялся select с динамическим содержимым. Я просто пока слабо разобрался.

Shadow ★★★★★
() автор топика
Ответ на: комментарий от omich

Thank you for staying with Perl.

Что, всё так плохо у него? А почему?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.