Ошибка имени столбца при вставке в базу данных SQLite

#sqlite

#sqlite

Вопрос:

 def insertorupdate(ID,naam):
count=0
conn=sqlite3.connect("Faceset.db")
cmd="SELECT Id from students"
cursor=conn.execute(cmd)
for row in cursor:
    count=1
if(count==1):
    print("1")
    cmd="UPDATE students SET Name=" str(naam) " WHERE Id=" str(ID)
else:
    print("2")
    cmd="INSERT INTO students(Id,Name) Values(" str(ID) "," str(naam) ")"
conn.execute(cmd)
conn.commit()
conn.close()
ID=input('enter user ID')
naam=str(input("enter your name"))
insertorupdate(ID,naam)
  

Следующая ошибка появляется всякий раз, когда я пытаюсь запустить эту программу.(Входные данные равны 1 и Ahaan). В базе данных есть два столбца Id и Name.

 enter user ID1
enter your nameAhaan
2
Traceback (most recent call last):
File "capture.py", line 26, in <module>
insertorupdate(ID,naam)
File "capture.py", line 21, in insertorupdate
conn.execute(cmd)
sqlite3.OperationalError: no such column: Ahaan
  

Ответ №1:

Вам нужно заключить имя в одинарные кавычки:

 cmd = "UPDATE students SET Name = '"   str(naam)   "' WHERE Id = "   str(ID)
  

Итак, теперь это приводит к:

 UPDATE students SET Name = 'Ahaan' WHERE Id = 1
  

Ваш код вызвал это:

 UPDATE students SET Name = Ahaan WHERE Id = 1
  

так Ahaan было взято в качестве названия столбца.

Подробнее здесь

Комментарии:

1. Что ж, это действительно решило проблему. Спасибо 🙂 @forpas