我正在用python写一段代码,根据另一个数据库的另一个mysql表生成和更新一个mysql表。
My code does something like this:
对于一个日期范围内的日期。
在db1中查询2个日期之间的一个数量
Do some work in pandas => df
在db2中删除df中带有ids的记录
用df.to_sql保存df
第1-2步的操作耗时不到2秒,而第3-4步可能需要10秒。第4步比第3步多花了4次。我如何改进我的代码,使编写过程更有效率
我已经为步骤3和4的df进行了分块。我已经在
.to_sql
中加入了
method=multi
(这根本不起作用)。我在想,我们是否可以做得更好。
with db.begin() as con:
for chunked in chunks(df.id.tolist(), 1000):
_ = con.execute(""" DELETE FROM table where id
in {} """.format(to_tuple(chunked)))
for chunked in chunks(df.id.tolist(), 100000):
df.query("id in @chunked").to_sql('table', con, index=False,
if_exists='append')