Для передачи данных без кавычек в метод execute()
в безопасном режиме, предотвращающем SQL-инъекции в PyMySQL, мы можем воспользоваться параметризованными запросами.
Параметризованные запросы позволяют нам передавать значения переменных как аргументы команды execute(), а не включая их непосредственно в SQL-запрос. Это позволяет библиотеке PyMySQL автоматически обрабатывать и экранировать специальные символы, такие как одинарные кавычки, предотвращая тем самым SQL-инъекции.
Вот пример использования параметризованного запроса в PyMySQL:
import pymysql # Подключение к базе данных connection = pymysql.connect(host='localhost', user='myuser', password='mypassword', db='mydatabase') # Создание курсора cursor = connection.cursor() # Параметризованный SQL-запрос query = "INSERT INTO mytable (column1, column2) VALUES (%s, %s)" # Значения для вставки value1 = "value1" value2 = 123 # Выполнение запроса cursor.execute(query, (value1, value2)) # Сохранение изменений в базе данных connection.commit() # Закрытие курсора и соединения cursor.close() connection.close()
В данном примере мы создаем параметризованный SQL-запрос для вставки данных в таблицу. Затем мы используем метод execute()
и передаем значения переменных value1
и value2
в виде кортежа как второй аргумент execute()
. В качестве плейсхолдеров в SQL-запросе используется %s
.
Следует отметить, что при использовании параметризованных запросов в PyMySQL вам не нужно беспокоиться о различных типах данных или экранировании символов, так как библиотека автоматически выполняет все необходимые преобразования и экранирование символов, чтобы предотвратить возможность SQL-инъекций.
Использование параметризованных запросов в PyMySQL является рекомендованным практикой, так как они обеспечивают безопасность и защиту от SQL-инъекций, особенно при передаче пользовательских данных в SQL-запросы.