Write fast pandas dataframe to postgres

后端 未结 1 1184
情深已故
情深已故 2020-12-10 20:04

I wonder of the fastest way to write data from pandas DataFrame to table in postges DB.

1) I\'ve tried pandas.to_sql, but for some reason it takes entit

相关标签:
1条回答
  • 2020-12-10 20:37

    Your second approach should be very fast.

    There are two problems with your code:

    1. After writing the csv to f you are positioned at the end of the file. You need to put your position back to the beginning before starting to read.
    2. When writing a csv, you need to omit the header and index

    Here is what your final code should look like:

    import io
    f = io.StringIO()
    pd.DataFrame({'a':[1,2], 'b':[3,4]}).to_csv(f, index=False, header=False)  # removed header
    f.seek(0)  # move position to beginning of file before reading
    cursor = conn.cursor()
    cursor.execute('create table bbbb (a int, b int);COMMIT; ')
    cursor.copy_from(f, 'bbbb', columns=('a', 'b'), sep=',')
    cursor.execute("select * from bbbb;")
    a = cursor.fetchall()
    print(a)
    cursor.close()
    
    0 讨论(0)
提交回复
热议问题