как обрабатывать ни один из SQL-выбора в инструкции if - PullRequest
0 голосов
/ 25 января 2019

Hello Stackoverflow Communtiy,

Для школьного проекта в настоящее время я пишу программу Python на Raspberry Pi 3 с подключением к базе данных.Raspberry Pi подключен к RFID-сканеру.

Мы хотим зафиксировать отсутствие.Во-первых, если в базе данных есть NULL, если ученик опаздывает на 5 минут, NULL следует заменить на 5 минут.и если он уходит раньше, чем заканчивается урок, время должно быть добавлено.

Я сейчас читаю None (NULL) из базы данных, я хотел бы использовать его в выражении IF.Так что если = NULL, то первое утверждение остальное другое.При этом я всегда получаю следующую ошибку:

Уже пытаюсь Delcare результат как None до его чтения из базы данных

 StudentID = str(result[0][0])
 c.execute("Select %s FROM  Attendances WHERE StudentID  = %s AND Date = %s 
 AND %s IS NULL  " % (("Std" +str((result1[0] 
 [1]))),StudentID,str((datetime.now().strftime('%Y%m%d'))),("Std" + 
 +str((result1[0][1])))))
 result3 = c.fetchall



if str(result3[0][0]) is None :



                c.execute("UPDATE Attendances SET %s = (Select current_time() - MIN(LessonStart)  from LessonTime where current_time() < LessonsEnds) WHERE SchuelerID  = %s AND Datum = %s AND %s IS NULL  " % (("Std" +str((result1[0][1]))),SchuelerID,str((datetime.now().strftime('%Y%m%d'))),("Std" +str((result1[0][1]))))),

                print (datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
                print 'Successfully registered as present'

            else:
                c.execute("UPDATE Attendances SET %s =  %s  +   (Select current_time() - MIN(LessonEnds)  from LessonTime where current_time() < LessonsEnds) WHERE StudentID  = %s AND Date = %s AND %s IS NOT NULL  " % (("Std" +str((result1[0][1]))),("Std" +str((result1[0][1]))),SchuelerID,str((datetime.now().strftime('%Y%m%d'))),("Std" +str((result1[0][1])))))

TypeError: «объект instancemethod» не имеет атрибута » GetItem

1 Ответ

0 голосов
/ 25 января 2019

Я вижу ошибку в строке result3=c.fetchall.fetchall - это функция, поэтому вы должны вызывать ее в скобках: fetchall().Следующая ошибка: когда вы делаете str(result[0][0]), это не логическое значение, а строка.Так что если result[0][0] будет None, то после преобразования с str(result[0][0]) он будет содержать строку "None".Итак, ваше утверждение сейчас похоже на if ("None" == None), которое всегда будет ложным.

...