首页 > 解决方案 > Python Pandas 数据框到 PostgreSQL 数据库中的临时表

问题描述

我有一个df形式为 Pandas 的数据框:

ID   X    Y    Z
1    0.5  0.6  0.1
2    0.6  0.9  0.2
3    0.1  0.6  0.3
etc.

数据框包含大约 3,000,000 个行条目。我正在尝试将此数据框作为临时表写入本地 PostgreSQL 数据库。我希望连接关闭时临时表消失。此外,它应该只对与源的当前连接可见。R 中的等效函数是copy_to()函数。

为了在 Python 中实现这一点,我有以下代码:

import psycopg2

conn = get_reporting_db_conn('localhost')
cur = conn.cursor()
rows = zip(df.ID, df.X, df.Y, df.Z)
cur.execute("""CREATE TEMP TABLE Scores(ID INTEGER, X FLOAT, Y FLOAT, Z FLOAT) ON COMMIT DROP""")
cur.executemany("""INSERT INTO Scores (ID, X, Y, Z) VALUES(%s, %s, %s, %s)""", rows)

conn.commit()
cur.close()
conn.close()

该代码有效,尽管该cur.executemany(...)行执行时间太长(逐行插入条目)。有没有其他(更快)的方法可以将 Pandas 数据帧作为临时表写入本地 PostgreSQL 数据库而不成为永久表?

标签: pythonpandaspostgresqltemp-tables

解决方案


推荐阅读