Python, определяющий список больших строк запроса и чтение из файла - PullRequest
0 голосов
/ 10 июня 2019

Мне любопытно узнать о лучших практиках, а также о производительности, которая будет достигнута при работе со списками больших строк в python. В частности, у меня есть список, который содержит различные запросы postgreSQL в виде строк, и мне интересно узнать, как лучше всего инициализировать список. Рассмотрим следующие 2 метода:

Способ 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 представляется лучшим выбором, но я бы хотел придерживаться передового опыта. Кроме того, будет ли построчное чтение файла в списке давать худшую производительность (на нетривиальную величину)?

1 Ответ

1 голос
/ 10 июня 2019

Просто используйте строку в тройных кавычках; 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
]

Являетесь ли вы жестким кодом запросов или читаете их из внешних файлов - это действительно отдельный вопрос, который лишь незначительно связан с внешним видом вашего исходного кода.

...