两个相同数据库的Python + MySQLDB批量插入/更新命令

时间:2010-08-19 21:59:37

标签: python mysql batch-file

我正在使用两个数据库,一个本地版本和服务器上的版本。服务器是最新版本,而不是重新映射从服务器到本地版本的所有表的所有值,

我想输入每个表,只从服务器插入/更新已更改的值,并将这些值复制到我的本地版本。

是否有一些简单的方法来处理这种情况?某种批量插入/更新? Googl'ing的答案是行不通的,我已经尝试过编写一个但是我开始陷入错误处理...... 我正在使用Python和MySQLDB ...感谢任何见解 史蒂夫

1 个答案:

答案 0 :(得分:0)

如果所有表的记录都有时间戳,您可以识别“服务器中已更改的值” - 否则,您不清楚计划如何执行该部分(与插入或更新无关) ,这是“选择正确的事情”的问题。)

获得所有重要值后,somecursor.executemany将允许您将它们全部作为批处理应用。根据您的索引,将它们放入非索引的辅助临时表可能会更快,然后从所有表插入/更新到真实的表中(在删除aux / temp之前),后者当然是单somecursor.execute

您可以通过使用一个(或几个)线程来执行选择并将结果放到Queue.Queue上,并通过一些工作线程来应用从中删除的结果,从而缩短整个作业的挂钟时间。队列到内部/本地服务器。 (读取与写入线程的最佳平衡最好通过尝试一些并进行测量 - 写入本身比读取速度慢,但是本地服务器的带宽可能高于另一个,因此很难预测)。

然而,除非你有策略来识别“服务器中已经改变的值”,否则所有这一切都没有实际意义,因此进行更多关于细节的讨论并不一定非常有用“下游“从那个身份证明。