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 中,然后检索它