dfs.append(psql.read_frame(sql, cnxn))
offset += chunk_size
if len(dfs[-1]) < chunk_size:
    break
full_df = pd.concat(dfs)
How to create a large pandas dataframe from an sql query without running out of memory?