Как поместить определенные символы в sqlite3

#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