Неизвестный столбец «имя» в «где пункт» - PullRequest
1 голос
/ 07 марта 2020

Я на самом деле работаю в системе посещаемости, основанной на распознавании лиц. Но, к сожалению, у меня проблема с Mysql для записи посещаемости

 if True in matches:
    first_match_index = matches.index(True)
    name = known_face_names[first_match_index]  

    sql = "UPDATE stud_att SET P1=1 WHERE name = fname"
    mycursor.execute(sql)
    mydb.commit()



  draw.rectangle(((left, top), (right, bottom)), outline=(255,255,0))


      text_width, text_height = draw.textsize(name)
      draw.rectangle(((left,bottom - text_height - 10), (right, bottom)), fill=(255,255,0), outline=(255,255,0))
      draw.text((left + 6, bottom - text_height - 5), name, fill=(0,0,0))



    del draw

Вот мой код, проблема в Unknown column 'name' in 'where clause' Я не знаю, где это неправильно, я уверен, что имя что система была распознана в базе данных!

Моя таблица

fname, lname, ID, P1, P2, P3, P4
Name1,  Name2, 1,

Ответы [ 2 ]

1 голос
/ 07 марта 2020
sql = "UPDATE stud_att SET P1=1 WHERE fname = " + name 

имя вашего столбца должно быть слева от =, а затем сравните его со значением, которое вы хотите проверить.

0 голосов
/ 07 марта 2020

Ваша непосредственная проблема - это проблема цитирования: в SQL строки должны быть заключены в одинарные кавычки; предполагая, что name является строкой, вам понадобится:

mycursor.execute("UPDATE stud_att SET P1 = 1 WHERE fname = '" + name + "'")

Но это подвержено ошибкам при записи и все равно оставляет ваш код для SQL внедрения. Итак: вы должны просто использовать параметризованный запрос:

mycursor.execute("UPDATE stud_att SET P1 = 1 WHERE fname = %s", (name))
...