python - Python定义大查询字符串列表与从文件中读取
问题描述
我很好奇在 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 似乎是更好的选择,但我想与最佳实践保持一致。此外,将文件逐行读取到列表中会带来更差的性能(以不小的数量)吗?
解决方案
只需使用三引号字符串;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
]
无论您是对查询进行硬编码还是从外部文件中读取它们,这实际上都是一个单独的问题,与源代码的外观关系不大。
推荐阅读
- oauth-2.0 - How can I implement Dropbox OAuth2 + PKCE flow with Blazor Webassembly?
- c# - 如何使用返回不一致结果的比较器对通用列表进行排序?
- r - 在 for 循环中填充向量时遇到问题
- latex - 多行MathJax的左对齐行
- xml - 为什么 Powershell 会输出不需要的调试字符串?
- java - SonarQube Maven Java 无法执行目标 org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar
- numpy - 如何将包含积分和导数的 sympy 表达式转换为 numpy
- java - 如何使用 i18 消息处理自定义异常
- r - survfit 数据框中的错误消息以在 R 中生成生存图
- python-3.x - 如何使用 WMIC 和 Powershell 定位可执行路径