我有一个超过2000个元素的python列表。我有一个postgress表我需要查询这些元素中的每一个,我目前正在使用以下内容。
cur.execute("SELECT * FROM patent_info WHERE patentno = ANY (%s);", (list_of_patent,))
这样做是为列表中的每个元素一次查询一个表,然后使用
将数据存储在数据帧中data = cur.fetchall()
问题是,对于超过2000个元素,响应需要一段时间来生成,有时会导致我的webapp超时或浏览器超时。
我一直在寻找一种方法来更快或更有效地查询表中的所有元素。
我考虑过为列表中的每个元素使用for循环并使用cur.fetchone(),但我认为会慢一些。
答案 0 :(得分:0)
改为join
:
cursor.execute("""
select *
from
patent_info
inner join
unnest(%s) u(patentno) using (patentno)
""", (list_of_patent,))