SQLクエリ文字列をフォーマットするための最良の方法を見つけようとしています。アプリケーションをデバッグしているとき、すべてのSQLクエリ文字列をログに記録したいのですが、文字列が適切にフォーマットされていることが重要です。
オプション1
def myquery():
sql = "select field1, field2, field3, field4 from table where condition1=1 and condition2=2"
con = mymodule.get_connection()
...
- これは、SQL文字列を出力するのに適しています。
- 文字列が長く、標準の80文字の幅に収まらない場合は、適切な解決策ではありません。
オプション2
def query():
sql = """
select field1, field2, field3, field4
from table
where condition1=1
and condition2=2"""
con = mymodule.get_connection()
...
ここではコードは明確ですが、sqlクエリ文字列を出力すると、これらの迷惑な空白がすべて表示されます。
u '\ nselect field1、field2、field3、field4 \ n_ _ ___ テーブルから\ n _ ___ where condition1 = 1 \ n _ ___ and condition2 = 2'
注:空白_
はエディターによって削除されるため、空白をアンダースコアに置き換えました。
オプション3
def query():
sql = """select field1, field2, field3, field4
from table
where condition1=1
and condition2=2"""
con = mymodule.get_connection()
...
- このオプションは、適切に集計されたコードの明確さを損なうので、好きではありません。
オプション4
def query():
sql = "select field1, field2, field3, field4 " \
"from table " \
"where condition1=1 " \
"and condition2=2 "
con = mymodule.get_connection()
...
- 各行に余分に入力する必要があり、クエリの編集も難しいため、このオプションは好きではありません。
私にとって最良の解決策はオプション2ですが、sql文字列を出力するときの余分な空白文字は好きではありません。
他のオプションを知っていますか?