【问题标题】:Query a Postgress table using a large python list and Psycopg2 with speed.?使用大型 python 列表和 Psycopg2 快速查询 Postgres 表。
【发布时间】:2017-08-28 22:26:54
【问题描述】:

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

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

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

data = cur.fetchall()

问题在于,对于超过 2000 个元素,响应需要一段时间才能生成,有时会导致我的 web 应用程序超时或浏览器超时。

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

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

【问题讨论】:

  • 尝试执行 WHERE Patentno IN ()
  • 检查查询执行时间与数据集传输时间并发布。
  • @ClodoaldoNeto 我如何检查这两个参数的时间?

标签: python sql postgresql psycopg2 psycopg


【解决方案1】:

改为使用join

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多