如何解决Python - 无法并行运行多个查询
我有一个接收多个连接(可以是 MysqL、MSsql 等)并使用 Python 执行一些查询的脚本。通过让我的流程并行运行这些查询,我取得了一些成就。为此,我收到一个数据框,并根据列值运行这些查询。为此,我有以下代码:
import pandas as pd
import multiprocessing
import util
import os
from itertools import product
df = pd.read_excel("myFile.xlsx",sheet_name = 'data')
conn,engine = #connections
def work(query):
try:
cursor.execute(query)
result = cursor.rowcount
except SyntaxError as e:
result = -999
return result
def run(df):
results = []
pool = multiprocessing.Pool(os.cpu_count())
total_rows = pool.starmap(work,product(df["queries"]),chunksize=1)
results.append(total_rows)
pool.close()
pool.join()
if __name__ == "__main__" :
run(df)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "dev.py",line 42,in <module>
run(df)
File "dev.py",line 34,in run
total_rows = pool.starmap(work,product(df["dsc_test_query"]),chunksize=1)
File "C:\AppData\Local\Programs\Python\python38-32\lib\multiprocessing\pool.py",line 372,in starmap
return self._map_async(func,iterable,starmapstar,chunksize).get()
File "C:\AppData\Local\Programs\Python\python38-32\lib\multiprocessing\pool.py",line 771,in get
raise self._value
AttributeError: 'float' object has no attribute 'encode'
有人知道并行运行查询列表的最佳选择吗?
谢谢!
解决方法
线
result = cursor.rowcount
可能导致错误。函数“工作”正在抛出属性 错误,您正在观察。如果我用类似的东西替换工作功能
def work(url):
raise Exception("some exception")
result = -999
return result
我可以观察到类似的行为。您很可能正在处理需要字符串的内容中的 result
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。