微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

psycopg2 executemany继续插入并仅获取异常记录ID

如何解决psycopg2 executemany继续插入并仅获取异常记录ID

我正在使用 psycopg2 在Postgres表上一次一次插入多行。我正在使用下面的函数来完成我的工作,插入多行工作正​​常,但是当一行有任何问题时,它将无法插入所有剩余的行。例如,我一次传递了100条记录,并且几何结构存在一行问题,但它也会丢弃其余的所有99条记录。所以我的用例是我要继续插入,但有问题的那一行除外。另外,我不想一次插入一行。

    def insert_to_db(data):
    """
    Inserting records to db
    :param data:
    :return:
    """
    if data:
        try:
            # connect postgresql
            db_conn = psycopg2.connect(host=t_host,port=t_port,dbname=t_dbname,user=t_user,password=t_pw)
            db_cursor = db_conn.cursor()

            # make sql query
            vars_list = [tuple(dic.values()) for dic in data]
            sql = '''INSERT INTO locations_ep (location_id,name,country_code,slug,type,center,bounding_polygon) VALUES (%s,%s,ST_SetSRID(ST_GeomFromGeoJSON(%s),4326));'''

            # execute and commit query
            db_cursor.executemany(sql,vars_list)
            db_conn.commit()

            # close everything
            db_cursor.close()
            db_conn.close()

        except Exception as e:
            print(e)

所以我的问题是什么是另一种方法,这样我就可以批量插入并仅跳过有问题的那些插入对象?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。