遵循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"
答案 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)