Какой самый быстрый / самый эффективный способ получить данные с Postgresql до python с помощью psycopg2 - PullRequest
1 голос
/ 14 января 2020

Вопрос в том, что написано на банке. В настоящее время у меня есть проект, над которым я работаю с текущим рабочим процессом:

  1. вытащить все данные из рабочего пространства в python
  2. поиск в каждом столбце списка ключевых терминов
  3. вернуть хиты
  4. следующую базу данных и повторить

Мне удалось втиснуть некоторую дополнительную эффективность в l oop, запустив concurrent.futures при поиске ключевого слова ( шаг 2 и 3), что позволяет мне запускать все ядра одновременно. Теперь я хотел посмотреть, смогу ли я получить некоторую дополнительную эффективность от l oop, ускорив вызовы базы данных (шаг 1)

Вот мой текущий код

import psycopg2


conn = pg.connect(
         host=host,
         database=database,
         username=username,
         password=password 
         )

SQLselect=  '''
            select *
            from {}
            '''
for databese in databases:
    cur=conn.cursor('database')
    call=cur.execute(SQLselect.format(database))
    rows=cur.fetchall
    cols=[desc[0] for desc in cur.description]
    temp = pd.DataFrame(rows, columns=cols

Вместо этого метода я также пытался использовать метод copy_to в psycopg2. Я подумал, что это будет быстрее, так как метод copy_from работает так хорошо. Тем не менее, это на самом деле оказалось медленнее, чем код, который я выше. Можно ли как-нибудь ускорить это или сделать это более эффективно?

1 Ответ

1 голос
/ 14 января 2020

Если цель состоит в том, чтобы выполнить SQL на всех этих БД как можно быстрее, и они не зависят от порядка, то вы, вероятно, могли бы запустить их все параллельно / одновременно.

Я бы взял посмотрите на ссылку здесь , чтобы найти возможные решения.

...