Psycopg2 uses up memory on large select query

前端 未结 2 1625
春和景丽
春和景丽 2020-12-15 06:14

I am using psycopg2 to query a Postgresql database and trying to process all rows from a table with about 380M rows. There are only 3 columns (id1, id2, count) all of type i

2条回答
  •  旧时难觅i
    2020-12-15 06:35

    Another way to use server side cursors:

    with psycopg2.connect(database_connection_string) as conn:
        with conn.cursor(name='name_of_cursor') as cursor:
    
            cursor.itersize = 20000
    
            query = "SELECT * FROM ..."
            cursor.execute(query)
    
            for row in cursor:
                # process row 
    

    Psycopg2 will fetch itersize rows to the client at a time. Once the for loop exhausts that batch, it will fetch the next one.

提交回复
热议问题