Запросите таблицу Postgress, используя большой список Python и Psycopg2 со скоростью.

У меня есть список Python более 2000 элементов. У меня есть таблица результатов, мне нужно запросить для каждого из этих элементов, в настоящее время я использую следующее.

cur.execute("SELECT * FROM patent_info WHERE patentno = ANY (%s);", (list_of_patent,))

Это делает запрос к таблице по одному для каждого элемента в списке, и я впоследствии сохраняю эти данные в кадре данных, используя

data = cur.fetchall()

Проблема в том, что при наличии более 2000 элементов ответ занимает некоторое время, иногда вызывая тайм-аут моего веб-приложения или тайм-аут браузера.

Я искал способ запросить все элементы из таблицы быстрее или эффективнее.

я думал об использовании цикла for для каждого элемента в списке и об использовании cur.fetchone(), но я предполагал, что это будет медленнее.

1 ответ

Сделать join вместо этого:

cursor.execute("""
    select *
    from
        patent_info
        inner join
        unnest(%s) u(patentno) using (patentno)
""", (list_of_patent,))
Другие вопросы по тегам