微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将熊猫数据框插入现有的postgres sql数据库中?

如何解决如何将熊猫数据框插入现有的postgres sql数据库中?

我有一个这样的数据框

index  userID    OtherIDs
0   abcdef2035  [test650,test447,test968,test95]
1   abcdef3007  [test999,test992,test943,test834]
2   abcdef2006  [test175,test996,test986,test965]
3   abcdef2003  [test339,test87,test678]
4   abcdef3000  [test129,test99,test921,test909]

生成此数据框的代码每天都会运行。我需要将其上载到现有数据库中的表名称“ result”。我必须检查表“结果”是否存在,如果存在,请使用上述数据框中的当前值删除/覆盖这些值。

postgres数据库信条:

PGHOST = 'localhost'
PGDATABASE = 'TestDB'
PGUSER = 'postgres'
PGPASSWORD = 'admin1234'

解决方法

您可以使用SQLAlchemy:(https://docs.sqlalchemy.org/en/14/core/engines.html

pandas df.to_sql:(https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.DataFrame.to_sql.html

假设数据框名称为df

from sqlalchemy import create_engine
engine = create_engine(user:password@host_ip:port/postgres_database)
df.to_sql('results',schema='<schema_name>',con = engine,if_exists='replace')

只需以正确的格式传递您的凭据即可。即engine = user:password@host_ip:port/postgres_database

构造引擎字符串: 假设以下sign_in变量:

sign_in = {
  "database": "TestDB","user": "postgres","password": "<your_password>","host": "localhost","port": "<your_port>"
}

signin_info = 'postgresql+pygresql://'+sign_in['user']+':'+sign_in['password']+'@'+sign_in['host']+':'+sign_in['port']+'/'+sign_in['database']

from sqlalchemy import create_engine
engine = create_engine(signin_info)

df.to_sql('results',if_exists='replace')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?