使用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(...)方法,用于执行查询?
感谢您的解释
答案 0 :(得分:1)
我认为这与将4个内联部分的一个查询转换为每行多个部分的一个查询有关。 executemany(...)可能必须进行额外的处理以去除空格,换行符和制表符,以确保它正确压缩到原始语句(不仅仅是重新排列字符串,还有其他漏洞,idk)。如果你想以这种方式编写它,请事先用split和join自己处理字符串。或者,
来自here:使用隐式延续,它更优雅:
def f():
s = ('123'
'456')
return s
....你可以看到这种方法是否更快。