0

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

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

这样做是为列表中的每个元素一次查询一个表,然后我将这些数据存储在数据框中,然后使用

data = cur.fetchall()

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

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

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

4

1 回答 1

0

join改为:

cursor.execute("""
    select *
    from
        patent_info
        inner join
        unnest(%s) u(patentno) using (patentno)
""", (list_of_patent,))
于 2017-08-29T11:46:11.177 回答