python- sqlite3.OperationalError: вблизи "<": синтаксическая ошибка - PullRequest
0 голосов
/ 10 декабря 2018

Я использую 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

1 Ответ

0 голосов
/ 11 декабря 2018

Ошибка вашего запроса в том, что вы не включаете кавычки внутри 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),))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...