Ошибка имени столбца при вставке в базу данных SQlite - PullRequest
1 голос
/ 16 марта 2019
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 Ответ

0 голосов
/ 16 марта 2019

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

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 было взято как имя столбца.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...