0

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

我完成并关闭了程序的第一部分——数据库分析。我花了很多时间进行分析以减少到所需的时间并且它起作用了。然后我开始了程序的第二部分,几天后我不得不执行第一部分来处理数据。但它并没有很慢。我知道我没有对那部分做任何重要的改变。

所以我花了几个小时浏览 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
+  """

这是我在共享课程中所做的唯一更改,这确实是速度差异的原因。我只是想不通,使用三重引号符号会发生什么。它是用于执行查询的 executemany(...) 方法吗?

谢谢你的解释

4

1 回答 1

1

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

这里开始:使用隐式延续,它更优雅:

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

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

于 2013-08-30T21:54:54.333 回答