Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 25, 2018 13:26:56

Vuramu
Зарегистрирован: 2017-12-30
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

TypeError: 'int' object is not subscriptable

Выполняю совершенно элементарные операции со словорем:

  def DeleteRecord(self, id):
        rec = self.GetRecordFromID(id)
        idQuestion = rec['idQuestion']
        idAnswer = rec['idAnswer']
        idDlg = rec['id']
        DataBaseModule.ExecuteSQL(
            "DELETE FROM questiontab WHERE id='"+str(idQuestion)+"'; "+
            "DELETE FROM answertab WHERE id='"+str(idAnswer)+"'; "+
            "DELETE FROM dlgtab WHERE id='"+str(idDlg)+"';")

В ответ получаю:

Traceback (most recent call last):
File “…\modules\DataBaseForm.py”, line 104, in DeleteRecord
DlgTable().DeleteRecord(id)
File “…\modules\database\DlgTableModule.py”, line 78, in DeleteRecord
idQuestion = rec
TypeError: ‘int’ object is not subscriptable

Самое интересное, что когдя я пытаюсь запустить этот скрипт через PyCharm то он ни на какую ошибку не ругается и послушно все исполняет, в то время, когда я пытаюсь это сделать через cmd.exe, питон внезапно начинает шизофренически придираться ко всяким непонятным мелочам, вплоть до принудительного завершения работы. В обоих случаях запрос к БД выполняется, независимо от появления ошибки.

Офлайн

#2 Янв. 25, 2018 14:02:09

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

TypeError: 'int' object is not subscriptable

Что-то совсем не типичное. Начнем с самого начала. Покажите на скриншоте, как запускаете из консоли и что получается. Кроме того нужен код в виде минимального размера примера, который вызывает у вас проблемы. Код нужно выложить сюда.



Офлайн

#3 Янв. 25, 2018 14:13:47

Vuramu
Зарегистрирован: 2017-12-30
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

TypeError: 'int' object is not subscriptable

Решил проблему. Я так понял, что если запускать скрипт напрямую через интерпретатор, то он проверяет все возможные исходы в методах, даже если при данном запуске все проходит нормально, в то время как PyCharm отправляет ему только то, что происходит в данный момент.

FishHook
Код нужно выложить сюда.

ошибка была в функции возвращающей словарь:

     def GetRecordFromID(self, id):
        for record in self.dlgT:
            if record['id'] == id:
                return record
        return {'id': 0 , 'idQuestion' : 0, 'idAnswer' : 0, 'idAction' : 0}
При отсутствии записи у меня возвращало ноль. До этой строчки, по моей логике, у меня все равно не должен доходить процесс, так как я туда отправляю только те значения, которые точно найдутся в списке, поэтому я не обращал на нее внимание.

Офлайн

#4 Янв. 25, 2018 14:42:36

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

TypeError: 'int' object is not subscriptable

какой хороший повод научиться использовать дебаггер и разобраться со специфичной проблемой самостоятельно



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version