【问题标题】:Get the identity id's from a batch insert into redshift using python psycopg2 execute_values使用 python psycopg2 execute_values 从批量插入中获取身份 ID
【发布时间】:2017-12-04 07:18:52
【问题描述】:

我目前正在将记录批量插入 Redshift (Postgres) 数据库。我正在使用 psycopg2.extras.execute_values 方法,正如我所读到的那样,这是使用以下代码构建包含要插入的数据的元组列表的最快方法

    dataList = []
    dataList.append(tuple(data.values()))

    insert_query = "insert into " + tableName + " ( " + insert + ") VALUES %s"

    try:
        psycopg2.extras.execute_values(cur, insert_query, dataList, template=None, page_size=100)
        con.commit()

这很好用,但是我需要从数据库的标识列中取回 id。我已经搜索过这种方法是否可行,但找不到关于 execute_values 方法是否可行的确切答案?

如果没有,实现此批量插入并检索 id 的最佳方法是什么?

【问题讨论】:

    标签: python postgresql amazon-redshift psycopg2 batch-insert


    【解决方案1】:

    使用returning 和大于批量大小的page_size

    insert_query = "insert into t (c) values %s returning *"
    execute_values(cursor, insert_query, data, template=None, page_size=99999)
    rows = cursor.fetchall()
    

    如果page_size 小于批量大小,则游标内容未定义,可能是最后一批。

    【讨论】:

    猜你喜欢
    • 2014-10-07
    • 2022-01-01
    • 2011-07-11
    • 2011-02-11
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多