使用大型python列表查询Postgress表,并使用速度查询Psycopg2。

时间:2017-08-28 22:26:55

标签: python sql postgresql psycopg2 psycopg

我有一个超过2000个元素的python列表。我有一个postgress表我需要查询这些元素中的每一个,我目前正在使用以下内容。

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

这样做是为列表中的每个元素一次查询一个表,然后使用

将数据存储在数据帧中
data = cur.fetchall()

问题是,对于超过2000个元素,响应需要一段时间来生成,有时会导致我的webapp超时或浏览器超时。

我一直在寻找一种方法来更快或更有效地查询表中的所有元素。

我考虑过为列表中的每个元素使用for循环并使用cur.fetchone(),但我认为会慢一些。

1 个答案:

答案 0 :(得分:0)

改为join

cursor.execute("""
    select *
    from
        patent_info
        inner join
        unnest(%s) u(patentno) using (patentno)
""", (list_of_patent,))