我使用的数据库接口将查询字符串作为key
方法的__getitem__()
参数。对于不太可读的复杂查询:
e = db["(col1 in ['ABC', 'DEF', 'GHI']) & ((col2 != {}) & (col3 != {})) & (col4 == 'something')".format(-some_value-1, -another_value-1)]
目前我正在使用以下内容:
e = db[" & ".join([
"(col1 in ['ABC', 'DEF', 'GHI'])",
"((col2 != {})".format(-some_value-1),
" (col3 != {}))".format(-another_value-1),
"(col4 == 'something')"
])]
我正在寻找一种更优雅(阅读:更容易阅读)的方式来格式化这个多行字符串。有什么建议吗?
答案 0 :(得分:1)
看看这是否看起来好像以防万一:)
e = db[
"""
(col1 in ['ABC', 'DEF', 'GHI'])
& ((col2 != {}) & (col3 != {}))
& (col4 == 'something')
""".format(-some_value-1, -another_value-1)
]
答案 1 :(得分:1)
e = db["(col1 in ['ABC', 'DEF', 'GHI'])" +
"& ((col2 != {}) & (col3 != {}))".format(-some_value-1, -another_value-1) +
"& (col4 == 'something')"]
答案 2 :(得分:0)
db[" & ".join(("(col1 in ['ABC', 'DEF', 'GHI'])",
"((col2 != {col2_neq})",
"(col3 != {col3_neq}))",
"(col4 == 'something')"
)).format(col2_neq=-some_value-1, col3_neq=-another_value-1)]
这与您的解决方案类似,但在两个方面有所不同:
format
最终会更容易阅读前四行而不会中断。{col2_neq}
和{col3_neq}
而不是两个{}
),以便最后一行可读。