我正在尝试找到最佳的方法来格式化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_____from table\n____where condition1=1 \n_____and condition2=2'
注意:我已经将空格替换为下划线_
,因为它们被编辑器修剪掉了。
选项三
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字符串时出现额外的空格。
你知道其他的选择吗?
textwrap.dedent
来输出到 SQL 文件或调试日志。 - Davos