【问题标题】:Connector/python slow insertion with tripled quotes带有三倍引号的连接器/python 慢速插入
【发布时间】:2013-09-03 10:34:30
【问题描述】:

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
+  """

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

谢谢你的解释

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-02-10
      • 2020-06-27
      • 2013-11-27
      • 1970-01-01
      • 2012-07-08
      • 2018-01-12
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      相关资源
      最近更新 更多