在变量中拆分长SQL查询

时间:2012-10-10 17:37:36

标签: python pep8

遵循PEP8指南,将非常长的sql wistatement格式化为变量的最佳做法是什么?

以下是如何分割变量的示例:

var= "some value"
query = "select a,b,c,d,e,f,g,h from a_very_long_tablename" +\
"where a_very_long_sql_statement='is_really_very_long' " +\
"or a_very_long_sql_statement='" + var + "' order by a"

4 个答案:

答案 0 :(得分:5)

使用三引号字符串:

query= """\
select a,b,c,d,e,f,g,h from a_very_long_tablename
where a_very_long_sql_statement='is_really_very_long'
or a_very_long_sql_statement='is_really_really_very_long'
"""

SQL是一种与空白无关的语言,您可以使用换行符和空格来分隔。最初的反斜杠逃脱了第一个换行符;这是个人偏好但不需要。

如果你真的不想要新行,请在字符串周围添加括号;然后不需要使用+符号,因为python会为你创建一个长字符串:

query = (
    "select a,b,c,d,e,f,g,h from a_very_long_tablename "
    "where a_very_long_sql_statement='is_really_very_long' "
    "or a_very_long_sql_statement='is_really_really_very_long'")

答案 1 :(得分:4)

请尝试以下代码:

query = """
SELECT a,b,c,d,e,f,g,h
FROM a_very_long_tablename
WHERE a_very_long_sql_statement='is_really_very_long
OR a_very_long_sql_statement='is_really_really_very_long
"""

答案 2 :(得分:1)

编辑后,如果要在sql查询中包含变量。

query = """
SELECT a,b,c,d,e,f,g,h
FROM a_very_long_tablename
WHERE a_very_long_sql_statement='is_really_very_long
OR a_very_long_sql_statement= %s
""" % var

答案 3 :(得分:0)

使用三引号'''格式字符串更具可读性。

var= "some value"

query = '''
select a,b,c,d,e,f,g,h from a_very_long_tablename
where a_very_long_sql_statement='is_really_very_long'
or a_very_long_sql_statement="{var}" order by a
'''.format(var=var)