2016-06-23 6 views
2

Я написал SQL-запрос, который использует данные, переданные из WTForms в качестве параметров. Как обеспечить двойные кавычки в переменной?Как обеспечить двойную кавычку в многострочных строках

q = """ 
select * from table 
where dt_date >= %(date)s""" % {'date':date} 

Прямо сейчас он показывает, как

select * from table 
where dt_date >= 23-06-2016 

, который затем бросает ошибку. Как это делается:

select * from table 
where dt_date >= "23-06-2016" 
+0

Вы можете поместить буквенные двойные кавычки в ваши тройные кавычки. – khelwood

+0

, это должно быть двойные кавычки или сильные '' 'цитаты тоже работают? Если бы одинарные кавычки работали, я бы рекомендовал использовать '% (date) r' вместо' s', чтобы получить представление кода строки (включая строковые кавычки) –

ответ

0

Python не мешает вам использовать двойные кавычки внутри ваших многострочных строк. Беда только в том случае, когда вы размещаете их рядом друг с другом (""""). Вы можете либо избежать двойных кавычек, как \", либо просто оставить пространство между ними и тройными кавычками (" """).

Экранирование:

q = """ 
select * from table 
where dt_date >= \"%(date)s\""""%{'date':date} 
>>> print q 

select * from table 
where dt_date >= "asdf" 

пространства перед тройными кавычками:

q = """ 
select * from table 
where dt_date >= "%(date)s" """%{'date':date} 
>>> print q 

select * from table 
where dt_date >= "asdf" 
1

Попытайтесь избежать двойных кавычек в своей группе.

>>> q = """ 
... select * from table 
... where dt_date >= \"%(date)s\""""%{'date':date} 
>>> q 
'\nselect * from table\nwhere dt_date >= "23-06-2016"' 
>>> print q 

select * from table 
where dt_date >= "23-06-2016"