Python 定义大型查询字符串列表与从文件中读取
Python defining a list of large query strings vs reading in from a file
我很好奇在 python 中处理大字符串列表时的最佳实践和性能。具体来说,我有一个列表,其中包含不同的 postgreSQL 查询作为字符串,我想知道如何初始化列表的最佳实践。考虑以下两种方法:
方法 1 - 在代码中创建列表:
query_load = [("SELECT val_1, COUNT(*) as frequency "
"FROM table "
"GROUP BY val_1 "
"ORDER BY val_1 ASC"),
("SELECT val_2, COUNT(*) as frequency "
"FROM table "
"GROUP BY val_2 "
"ORDER BY val_2 ASC"),
("SELECT val_3, COUNT(*) as frequency "
"FROM table "
"GROUP BY val_3 "
"ORDER BY val_3 ASC"),
("SELECT val_4, COUNT(*) as frequency "
"FROM table "
"GROUP BY val_4 "
"ORDER BY val_4 ASC"),
...
]
方法 2 - 从文件中将查询读入列表
my_list = [line.rstrip('\n') for line in open("..Desktop/my_queries.txt")]
就可读性和代码行数而言,方法 2 似乎是更好的选择,但我希望与最佳实践保持一致。此外,将文件逐行读取到列表中会导致性能变差(非常小的数量)吗?
只需使用一个triple-quoted字符串; SQL 不会关心用于使您的 Python 源代码可读的空格。
query_load = [
"""
SELECT val_1, COUNT(*) as frequency
FROM table
GROUP BY val_1
ORDER BY val_1 ASC
""",
"""
SELECT val_2, COUNT(*) as frequency
FROM table
GROUP BY val_2
ORDER BY val_2 ASC
""",
# etc
]
您是 hard-code 查询还是从外部文件中读取它们实际上是一个单独的问题,与源代码的外观仅略有相关。
我很好奇在 python 中处理大字符串列表时的最佳实践和性能。具体来说,我有一个列表,其中包含不同的 postgreSQL 查询作为字符串,我想知道如何初始化列表的最佳实践。考虑以下两种方法:
方法 1 - 在代码中创建列表:
query_load = [("SELECT val_1, COUNT(*) as frequency "
"FROM table "
"GROUP BY val_1 "
"ORDER BY val_1 ASC"),
("SELECT val_2, COUNT(*) as frequency "
"FROM table "
"GROUP BY val_2 "
"ORDER BY val_2 ASC"),
("SELECT val_3, COUNT(*) as frequency "
"FROM table "
"GROUP BY val_3 "
"ORDER BY val_3 ASC"),
("SELECT val_4, COUNT(*) as frequency "
"FROM table "
"GROUP BY val_4 "
"ORDER BY val_4 ASC"),
...
]
方法 2 - 从文件中将查询读入列表
my_list = [line.rstrip('\n') for line in open("..Desktop/my_queries.txt")]
就可读性和代码行数而言,方法 2 似乎是更好的选择,但我希望与最佳实践保持一致。此外,将文件逐行读取到列表中会导致性能变差(非常小的数量)吗?
只需使用一个triple-quoted字符串; SQL 不会关心用于使您的 Python 源代码可读的空格。
query_load = [
"""
SELECT val_1, COUNT(*) as frequency
FROM table
GROUP BY val_1
ORDER BY val_1 ASC
""",
"""
SELECT val_2, COUNT(*) as frequency
FROM table
GROUP BY val_2
ORDER BY val_2 ASC
""",
# etc
]
您是 hard-code 查询还是从外部文件中读取它们实际上是一个单独的问题,与源代码的外观仅略有相关。