首页 > 解决方案 > 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 似乎是更好的选择,但我想与最佳实践保持一致。此外,将文件逐行读取到列表中会带来更差的性能(以不小的数量)吗?

标签: pythonpython-3.xstringlistfile-io

解决方案


只需使用三引号字符串;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
]

无论您是对查询进行硬编码还是从外部文件中读取它们,这实际上都是一个单独的问题,与源代码的外观关系不大。


推荐阅读