Запросите таблицу 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,))