披露:我不是开发人员或其他什么人,我只是必须这样做,因为,嗯,我必须这样做。当然,当我用 Python 编写 Hangman 代码时,我感到非常自豪,但这已经很不错了。
所以我必须将数据从一项服务放入 MySQL 表,并通过其聚合 API 连接到它。令我惊讶的是,一切都按预期进行,但有两个问题:
- 脚本非常慢。执行它大约需要 500-700 秒。
- 当我手动运行它时它可以工作,但它在调度程序上超时。
所以我的问题给你,社区同胞们,你能提示我应该读什么吗,或者,也许,改变一下,让它至少更快一点。
作为一名业务背景,我必须对 10 种不同的语言运行单独的查询,但在下面的代码中,我只提供一种语言并对其进行描述。
计划执行的超时时间介于第 5 种语言和第 6 种语言之间。
# used modules
import requests
import json
import pandas as pd
import MySQLdb
url = 'here comes URI to service API aggregation call'
headers = {'Integration-Key':'Key','Content-Type' : 'application/json'}
# the next one is different request for each of 10 languages, so 10 variables.
data_language = '''{Here comes a long long JSON request so API can aggregate it all }'''
# requesting data from API
# Again, 10 times for the next block
response = requests.post(url, headers=headers, data=data_en)
json_data = json.loads(response.text)
df_en = pd.DataFrame(json_data['results'])
# So on schedule, it time outs after 5th or 6th language
# creating merged table
df = pd.concat([df_en,df_sv,and_so_on],ignore_index=True)
db=MySQLdb.connect(host="host", user="user",passwd="pws",db="db")
df.to_sql(con=db, name='nps', if_exists='replace', flavor='mysql')
最佳答案
我从未发现to_sql
适用于大型数据集。我建议将您的数据帧转换为 CSV,然后使用 psycopg2 对您的表进行批量COPY
。
关于python - 关于优化流程的建议 - JSON -> pandas -> csv 和 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43945061/