如何在mysql.connector中使用多个游标?

How to use multiple cursors in mysql.connector?

我想执行多个查询而不互相阻塞。我创建了多个游标并执行了以下操作但得到了 mysql.connector.errors.OperationalError: 2013 (HY000): Lost connection to MySQL server during query

import mysql.connector as mc
from threading import Thread

conn = mc.connect(#...username, password)
cur1 = conn.cursor()
cur2 = conn.cursor()

e1 = Thread(target=cur1.execute, args=("do sleep(30)",)) # A 'time taking' task
e2 = Thread(target=cur2.execute, args=("show databases",)) # A simple task

e1.start()
e2.start()

但是我遇到了操作错误。阅读其他一些问题,有人建议使用多个连接比使用多个游标更好。那么我应该使用多个连接吗?

我不了解您所处情况的完整背景,无法了解性能注意事项。是的,如果您在严格的时序限制下操作,那么启动新连接可能会被认为是繁重的工作,而这些时序限制相对于启动新连接所需的时间来说很短,并且您被迫为每个查询执行此操作...

但是您可以使用提前创建的共享连接 pool 来缓解这种情况,然后在资源允许的情况下通过这些连接分发您的查询(在单独的线程中)。

另一方面,如果您的所有查询时间相对于创建新连接所需的时间而言都相当长,并且您不希望 运行并行,那么按需创建连接可能是一个合理的选择。请注意,如果您尝试走得太远,您将 运行 受到打开连接数的限制,以及数据库系统本身的资源限制。您可能不想对共享数据库执行类似的操作。同样,这只是在某些非常特定的情况下的合理选择。