Найти - Пользователи
Полная версия: TypeError: 'int' object is not subscriptable
Начало » Python для новичков » TypeError: 'int' object is not subscriptable
1
Vuramu
Выполняю совершенно элементарные операции со словорем:

  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, питон внезапно начинает шизофренически придираться ко всяким непонятным мелочам, вплоть до принудительного завершения работы. В обоих случаях запрос к БД выполняется, независимо от появления ошибки.
FishHook
Что-то совсем не типичное. Начнем с самого начала. Покажите на скриншоте, как запускаете из консоли и что получается. Кроме того нужен код в виде минимального размера примера, который вызывает у вас проблемы. Код нужно выложить сюда.
Vuramu
Решил проблему. Я так понял, что если запускать скрипт напрямую через интерпретатор, то он проверяет все возможные исходы в методах, даже если при данном запуске все проходит нормально, в то время как 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}
При отсутствии записи у меня возвращало ноль. До этой строчки, по моей логике, у меня все равно не должен доходить процесс, так как я туда отправляю только те значения, которые точно найдутся в списке, поэтому я не обращал на нее внимание.
JOHN_16
какой хороший повод научиться использовать дебаггер и разобраться со специфичной проблемой самостоятельно
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