2

遵循 PEP8 指南,将很长的 sql 语句格式化为变量的最佳实践是什么?

下面是一个示例,说明我如何拆分变量:

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

4 回答 4

6

使用三引号字符串:

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'")
于 2012-10-10T17:38:38.223 回答
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
"""
于 2012-10-10T17:38:53.320 回答
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
于 2012-10-10T17:50:37.530 回答
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)
于 2015-06-18T15:49:35.347 回答