Я использую Python 3.6. Когда я пытаюсь реализовать это, в строке: cursor = conn.execute(cmd) это вызывает ошибку в качестве заголовка, кто-нибудь может мне помочь? Спасибо большое.
Изменение: я нашел решение, просто отредактировав str (id) в str (Id)
def getProfile(id):
conn=sqlite3.connect("FaceBase.db")
cmd="SELECT * FROM People WHERE ID=" +str(id)
cursor=conn.execute(cmd)
profile=None
for row in cursor:
profile=row
conn.close()
return profile
Ошибка вашего запроса в том, что вы не включаете кавычки внутри cmd, которые необходимы, если ваш аргумент является строкой. Это должно было быть так:
cmd="SELECT * FROM People WHERE ID='{}'".format(str(id))
Как отметил @Aaron_ab в комментарии. Вы никогда не должны использовать такие SQL-запросы, потому что злоумышленник может выполнить SQL-инъекцию. Например, если он введет в качестве идентификатора 1' OR 1=1/*
он вернет все строки таблицы.
Всегда старайтесь использовать подготовленные операторы, которые не позволяют пользователям подделывать свои собственные операторы SQL. Пример:
cmd="SELECT * FROM People WHERE ID=%s"
curs.execute(cmd, (str(id),))
cmd
. Может быть,id
не совсем то, что вы думаете.