2016-06-23 11 views
2

WTFormsから渡されたデータをパラメータとして使用するSQLクエリを作成しました。 変数に二重引用符を付けるにはどうすればよいですか?複数行の文字列で二重引用符を使用する方法

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

二重引用符でなければならないのでしょうか?一重引用符がうまくいけば、文字列(文字列引用符を含む)のコード表現を取得するには 's'の代わりに'%(date)r'を使うことをお勧めします –

答えて

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" 
関連する問題