有没有办法做一个 SQL 更新-在哪里从一个数据框架没有迭代通过每一行?我有一个 postgreql 数据库,要从一个数据框架更新 db 中的一个表,我会使用 Psycopg2并执行以下操作:
con = psycopg2.connect(database='mydb', user='abc', password='xyz')
cur = con.cursor()
for index, row in df.iterrows():
sql = 'update table set column = %s where column = %s'
cur.execute(sql, (row['whatver'], row['something']))
con.commit()
但另一方面,如果我从 sql 读取一个表,或者将整个数据框架写入 sql (不更新-where) ,那么我只需要使用 Pandas 和 sql 炼金术。比如:
engine = create_engine('postgresql+psycopg2://user:pswd@mydb')
df.to_sql('table', engine, if_exists='append')
使用 to _ sql 的“一行程序”非常棒。是不是有一些类似的做一个更新-在哪里从熊猫到 postgreql?或者是唯一的方法,通过迭代每一行,就像我上面做的那样。对每一行进行迭代不是一种效率低下的方法吗?