如何使用 Python 更新来自数据框的基于 postgres 表列的值
python 474
原文标题 :How to update postgres table column based values coming from dataframe using Python
我有一个名为 Risk 的表,它有 4 列。此表列risk_state
值需要使用来自 Dataframe (DF) 的riskState
值进行更新。
如何从 python 为我的 uodate 查询编写更新语句。我不确定如何将值从数据框传递到表以进行更新。
风险
risk_id shipment_id customer_code risk_state
125AB ASW11 JJ TBW
326BW GY456 JJ TBW
676BY ABW11 JJ TBW
678BY BYM11 RR VT
数据框 (DF)
riskId shipmentId customerCode riskState
125AB ASW11 JJ VT
326BW GY456 JJ VB
676BY ABW11 JJ VT
678BY BYM11 RR VT
风险表的预期输出
risk_id shipment_id customer_code risk_state
125AB ASW11 JJ VT
326BW GY456 JJ VB
676BY ABW11 JJ VT
678BY BYM11 RR VT
代码
#连接字符串
postgres_str = f'postgresql://{username}:{password}@{host}:{port}/{dbname}'
# Create the connection and cursor
rds_conn = psycopg2.connect(postgres_str)
rds_cur = rds_conn.cursor()
rds_cur.execute("""update risk where...""")
rds_conn.commit()
这怎么可能……
回复
我来回复-
Amirhossein Kiani 评论
我不是
Postgresql
方面的专家,但我相信您需要的是具有特定left_on
和right_on
参数的merge
函数:(risk.merge(Dataframe, left_on=["risk_id", "shipment_id", "customer_code"], right_on=["riskId", "shipmentId", "customerCode"]) [["risk_id","shipment_id", "customer_code", "riskState"]] .rename(columns={"riskState":"risk_state"}))
输出
risk_id shipment_id customer_code risk_state 125AB ASW11 JJ VT 326BW GY456 JJ VB 676BY ABW11 JJ VT 678BY BYM11 RR VT 我猜你可以使用这个输出来更新你的 SQL 数据库。
2年前