python - 关于优化流程的建议 - JSON -> pandas -> csv 和 MySQL

标签 python mysql json pandas

披露:我不是开发人员或其他什么人,我只是必须这样做,因为,嗯,我必须这样做。当然,当我用 Python 编写 Hangman 代码时,我感到非常自豪,但这已经很不错了。

所以我必须将数据从一项服务放入 MySQL 表,并通过其聚合 API 连接到它。令我惊讶的是,一切都按预期进行,但有两个问题:

  1. 脚本非常慢。执行它大约需要 500-700 秒。
  2. 当我手动运行它时它可以工作,但它在调度程序上超时。

所以我的问题给你,社区同胞们,你能提示我应该读什么吗,或者,也许,改变一下,让它至少更快一点。

作为一名业务背景,我必须对 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/

相关文章:

javascript - 具有相同id的多个div中的Ajax json值

java - 当在 json 中发现具有不同类型值的相同键时,gson 解析错误

python - 根据字典中的另一个值从字典列表中检索一个值

python - 如何使用 xml.dom 库在 python 中序列化 XML 文档

python - 我如何首先根据它们的单位(bit/s、Kbit/s 等)对特定的字典列表进行排序,然后根据它们的值对它们进行排序

python - 并不总是包含在标签 Python Beautifulsoup 中的网页抓取属性

PHP PDO 包装类实现

php - 不使用 PDO 创建表

Python:如何在 eval 中访问 eval 的 globals()

php - 如果字段留空(十进制)MySQL/PHP,则插入 NULL