как выбрать переменную в таблице sqlit3 - PullRequest
0 голосов
/ 22 апреля 2020

Я попытался получить некоторую переменную из своей таблицы SQLite по некоторым причинам. Я получаю сообщение об ошибке, что в таблице отсутствует столбец «user1»

, что я пытаюсь сделать, это go для пользователей моей таблицы оттуда получите форму-значения user_id, где имя пользователя в той же таблице равно значению user1

sql.cur.execute("SELECT user_id FROM users WHERE username = {}".format('user1'))

1 Ответ

0 голосов
/ 23 апреля 2020

Поскольку вы используете обычное Python форматирование строки, ваш запрос такой:

SELECT user_id FROM users WHERE username = user1

Обратите внимание на отсутствие кавычек. where username = user1 - это когда столбец username равен столбцу user1.

Вам необходимо заключить в кавычки ваши значения.

SELECT user_id FROM users WHERE username = 'user1'

Но не обрабатывать SQL как строки . Из документов Python sqlite3 ...

Обычно для операций SQL необходимо использовать значения из Python переменных. Вы не должны собирать ваш запрос, используя строковые операции Python, потому что это небезопасно; это делает вашу программу уязвимой для SQL инъекционной атаки (см. https://xkcd.com/327/ для юмористического примера того, что может go не так).

Вместо этого используйте параметры связывания . Они обрабатывают запрос больше как передачу параметров в функцию.

sql.cur.execute("SELECT user_id FROM users WHERE username = ?", 'user1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...