连接器/ python缓慢插入三倍引号

时间:2013-08-30 16:08:14

标签: python-3.x mysql-python mysql-connector

使用Connector / python发生了一件非常奇怪的事情,我在互联网上找不到任何解释。

我完成并关闭了程序的第一部分 - 数据库分析。我已经花了很多时间来熟练地减少所需的时间并且它有效。然后我开始了程序的第二部分,几天后我不得不执行第一部分来处理数据。但它不会很慢。我知道我没有对那部分做过任何重大改变。

所以我花了几个小时浏览git log并检查以前的版本,并通过快速分析找到了最后一次提交。

差异的输出:

-  insertq = "INSERT INTO `sp_domains` (domain) VALUES (%s) ON DUPLICATE KEY UPDATE domain=domain"     
+  insertq = """
+  INSERT 
+  INTO `sp_domains` (domain)
+     VALUES (%s) 
+     ON DUPLICATE KEY UPDATE domain=domain
+  """

这是我在共享课程中唯一的变化,它确实是速度差异的原因。我只是无法弄清楚,通过使用tripple引号表示法发生了什么。是不是有executemany(...)方法,用于执行查询?

感谢您的解释

1 个答案:

答案 0 :(得分:1)

我认为这与将4个内联部分的一个查询转换为每行多个部分的一个查询有关。 executemany(...)可能必须进行额外的处理以去除空格,换行符和制表符,以确保它正确压缩到原始语句(不仅仅是重新排列字符串,还有其他漏洞,idk)。如果你想以这种方式编写它,请事先用split和join自己处理字符串。或者,

来自here:使用隐式延续,它更优雅:

def f():
    s = ('123'
         '456')
    return s

....你可以看到这种方法是否更快。