#python-3.x #sqlite #discord.py
#python #python-3.x #sqlite #discord.py
Вопрос:
я создаю базу sql с помощью python3 и добавляю несколько человек в свою базу. У меня просто проблема с 2 людьми: с кем-то, у кого есть «‘», и с кем-то, у кого есть «)»
# execut = "INSERT INTO users VALUES(Rafagraph | Notion'Art#0739, 272125469544022027, Rafagraph | Notion'Art, 1, 0, 0, 0, 0.0)"
# cur.execute(execut)
# execut = "INSERT INTO users VALUES ('CmoipastoiB#9926)', '703280156197912736', 'CmoipastoiB-)', 1, 0, 0, 0, 0.0)"
# cur.execute(execut)
я пробовал, как в print (‘ ‘ ‘), но это не работает.
Спасибо!
Комментарии:
1. Вы должны использовать параметризованные запросы — см., Например: stackabuse.com/a-sqlite-tutorial-with-python
Ответ №1:
Вы должны параметризовать свой SQL, иначе вы уязвимы для SQL-инъекций. Представьте, что чье-то имя содержит допустимые операторы SQL: вы бы в конечном итоге выполнили это, что может быть плохо.
statement = "INSERT INTO users VALUES (?, ?, ?)"
values = (a, b, c)
cur.execute(statement, values)
Это позволит правильно экранировать значения в выполняемом операторе SQL.
Комментарии:
1. Спасибо за ваш ответ! это работает! я слышал эту «инъекцию», но не знал, как ее защитить. ty