#python #sql #postgresql #multiprocessing
#python #sql #postgresql #многопроцессорная обработка
Вопрос:
Я адаптирую скрипт на Python, который я нашел в качестве ответа на аналогичный вопрос (56400556). Скрипт работает, но в настоящее время результаты SQL сохраняются в списке, в то время как я ищу возможность экспортировать это в фрейм данных (или второй вариант в csvs).
Есть ли способ запускать SQL-запросы параллельно (поскольку каждый запрос занимает около 10 минут) и сохранять эти данные в dataframe. Это может быть либо один фрейм данных с результатом всех запросов, либо один фрейм данных на запрос, это не имеет значения
Вторичной проблемой было бы избежать перечисления всех SQL-запросов как только одного изменения параметра, но иметь один SQL-запрос и список параметров для ввода (например: ‘UK’, ‘IT’, ‘US’ и т.д.)
from multiprocessing import Pool
import pandas as pd
import psycopg2
import os
query_load = [("SELECT * FROM customer_table WHERE country ='UK' "),
("SELECT * FROM customer_table WHERE country ='IT' ")]
db_conn = psycopg2.connect(
host="hostname",
database="databasename",
user="username",
password="password")
def read_sql(query):
return pd.read_sql(query, db_conn)
if __name__ == '__main__':
with Pool() as p:
data_load = p.map(read_sql, query_load)
print(data_load)
Спасибо
Комментарии:
1. Вы добавили индекс на
country
?2. Да, я добавил индексы в таблицу SQL, но это не ускоряет выполнение запроса
3. Сколько строк в базе данных? Миллионы?