python - 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 数据库而不成为永久表?
解决方案
推荐阅读
- python - 如何在 Python 中实现这个 R 泊松分布?
- android - 如何在不获取 ResourcesNotFound 的情况下检查 getResources 是否为空
- git - 如何使用私有 fork 或存储库公开我的 dotfiles?
- flutter - 查找已停用小部件的祖先是不安全的
- python - 需要将随机输出转换为字符串
- string - 在go中遍历字符串字符的最正确方法是什么
- python-3.x - 如何刷新或销毁在 tkinter python 的画布中创建的框架?
- angular - Angular 7 LOCALE_ID 使用普通旧对象注入
- iis - VB6 ActiveX DLL 暴露表单 IIS
- python - 除 UserDoesNotExist 中的 Django 标识错误