有什么方法可以从一个数据框架中进行SQL更新-where,而不需要迭代每一行?我有一个postgresql数据库,如果要从一个数据框架中更新一个表,我会使用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中(没有update-where),那么我将直接使用pandas和sqlalchemy。就像这样。
engine = create_engine('postgresql+psycopg2://user:pswd@mydb')
df.to_sql('table', engine, if_exists='append')
有一个使用to_sql的 "单线程 "就很不错了。难道就没有类似的东西来从pandas到postgresql做一个update-where吗?还是像我上面做的那样,只能通过迭代每一行来实现。遍历每一行不是一种低效的方法吗?