#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