Как с помощью Python 3 и модуля re
избежать двойных кавычек в инструкции INSERT для SQL Server?
Я пробовал много разных способов, но SQL Server всегда выдает ошибку форматирования.
Вот пример:
INSERT INTO [events] VALUES ('<span style=\"font-size:14px;\"><span style=\"font-family:\'Times New Roman\', Times, serif;\">
Моя последняя попытка была такой:
escaped_statement = re.sub(r'\"', r'\"\"', escaped_statement)
Но это возвращает это:
<span style='\"\"font-size:14px;
Зачем вам пытаться избежать кавычек, добавляя больше кавычек? Кроме того, использование стиля непосредственно в теге не является оптимальным. Почему вы не используете класс?
Это ответ на ваш вопрос? Как использовать переменные в операторе SQL в Python?
Поскольку T-SQL использует для экранирования два символа, @OysterShucker. SELECT ''''
вернулся бы '
.
@ThomA Но у них нет двух персонажей ""
, у них есть этот \"\"
.
Если вы избегаете строк из внешнего мира, вы уже проиграли игру, прочитайте о SQL-инъекции. Используйте параметры при выполнении sql, и все должно быть в порядке.
Ваш пример должен быть таким: INSERT INTO [events] VALUES ('<span style = "font-size:14px;"><span style = "font-family:''Times New Roman'', Times, serif;">')
Зачем вам экранировать двойные кавычки, в SQL это не имеет значения, любое содержимое внутри одинарных кавычек 'string'
считается строковым литералом. и если вы хотите избежать одинарных кавычек, вы можете просто использовать двойные одинарные кавычки ''
вместо одинарных кавычек '
.
style = "font-family:"Times New Roman"...;"
сломается. У вас не может быть "
внутри "
.
Проблема не в двойных кавычках, а в одинарных кавычках, и если вы параметризировали, это тоже не проблема. Классическая Проблема XY.