我有多个查询需要使用 python 在 MySQL 数据库上执行。 如果我有 3 个查询,每个查询运行 5 分钟 然后执行所有查询大约需要 15 分钟
是否可以使用线程同时执行/激发所有 3 个查询,以便将执行时间减少到大约 5 分钟?
当我尝试多线程或多处理时,我得到的错误是
OperationalError: 2013 (HY000): 在查询期间丢失与 MySQL 服务器的连接
def connect(host,username,passwor,db_name):
mysql_db = mysql.connector.connect(
host = host,
user = username,
passwd = password,
database = db_name
)
cursor = mysql_db.cursor()
return(cursor)
def execute_query(cursor,query):
cursor.execute(query)
res = cursor.fetchall()
que.put(res)
query_1 = "select count(*) from db.table1"
query_2 = "select count(*) from db.table2"
query_3 = "select count(*) from db.table3"
cursor = connect((host,username,passwor,db_name):
threads = []
que = Queue.Queue()
threads.append(Thread(target = execute_query, args = (cursor,query1,)))
threads.append(Thread(target = execute_query, args = (cursor,query2,)))
threads.append(Thread(target = execute_query, args = (cursor,query3,)))
for thread in threads:
thread.start()
for thread in threads:
threads.join()
res = que.get()
最佳答案
你可以像这样调整你的“连接”功能:
def connect(host,username,passwor,db_name):
mysql_db = mysql.connector.connect(
host = host,
user = username,
passwd = password,
database = db_name
)
cursor = mysql_db.cursor()
#####
cursor.execute("SET SESSION MAX_EXECUTION_TIME=50000")
#####
return(cursor)
就在 cursor = mysql_db.cursor() 之后
关于mysql - 使用python中的线程在Mysql上同时运行多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62509787/