Python - 如何解析 JSON 并将其保存到 MYSQL 数据库

Posted

技术标签:

【中文标题】Python - 如何解析 JSON 并将其保存到 MYSQL 数据库【英文标题】:Python - How to parse and save JSON to MYSQL database 【发布时间】:2017-06-16 14:13:43 【问题描述】:

如标题所示,如何使用 python 优雅地访问 API 并将 JSON 内容解析并保存到关系数据库 (mysql) 中以供以后访问?

在这里,我将数据保存到 pandas 对象中。但是如何创建一个 mysql 数据库,将 json 内容保存到其中,并访问这些内容以供以后使用?

# Libraries
import json, requests
import pandas as pd
from pandas.io.json import json_normalize

# Set URL
url = 'https://api-v2.themuse.com/jobs'

# For loop to
for i in range(100):
    data = json.loads(requests.get(
        url=url,
        params='page': i
    ).text)['results']

data_norm = pd.read_json(json.dumps(data))

【问题讨论】:

提示:使用requests.get(<args>).json()['results'] 而不是json.loads(requests.get(<args>).text)['results'] 如果是本地项目,不妨考虑轻量级数据库sqlite,python内置支持docs.python.org/2/library/sqlite3.html 你为什么还要在这里使用pandas?此外,您将覆盖 data 循环的每次迭代。 我是先用pandas,但觉得从长远来看还是建个数据库比较好。 你试过我的答案了吗? 【参考方案1】:

你使用Mysql Workbench CE之类的东西在你的服务器上创建你的Mysql表。然后在python中你这样做。我不确定您是否要在 for 循环或 data_norm 中使用数据,以便于使用,这里有一些功能。 insertDb() 可以放在你的 for 循环中,因为在每次迭代中数据都会被自己覆盖。

import MySQLdb

def dbconnect():
    try:
        db = MySQLdb.connect(
            host='localhost',
            user='root',
            passwd='password',
            db='nameofdb'
        )
    except Exception as e:
        sys.exit("Can't connect to database")
    return db

def insertDb():
    try:
        db = dbconnect()
        cursor = db.cursor()
        cursor.execute("""
        INSERT INTO nameoftable(nameofcolumn) \
        VALUES (%s) """, (data))
        cursor.close()
    except Exception as e:
        print e

【讨论】:

【参考方案2】:

如果这只是为了以后处理的存储,有点像缓存,一个 varchar 字段就足够了。但是,如果您需要检索一些结构化的 jdata,那么 JSON 字段就是您所需要的。

【讨论】:

以上是关于Python - 如何解析 JSON 并将其保存到 MYSQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

解析嵌套的 JSON 并将其保存到 SQLite 中,然后检索它

解析嵌套的 json 并将其保存在 csv 中

保存 json 响应并将其解析为 swift 对象

保存解析 json 文件的输出并将其传递给 Bigqueryinsertjoboperator

如何解析json并将其填充到模型中?

如何从 url 获取 json 数据并将其保存到 const 变量 [TypeScript]