2017-01-31 19 views
4

タイトルが示すように、Pythonを使用してAPIにエレガントにアクセスし、後でアクセスできるようにJSONコンテンツを解析してリレーショナルデータベース(MYSQL)に保存するにはどうすればよいですか?Python - 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)) 
+1

ヒント代わりjson.loads(requests.get()の.text) 'の' [ '結果'] 'requests.get().json()を使用して[ '結果']' –

+1

ローカルプロジェクトの場合は、軽量なデータベース 'sqlite'を考慮する必要があり、Pythonには組み込みサポートが組み込まれています。https://docs.python.org/2/library/sqlite3.html – Shane

+1

なぜあなたは' pandas 'ここ?また、ループの繰り返しごとに 'data'を上書きします。 –

答えて

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 
1

これは、後で処理するためのストレージのためのもので、キャッシュのようなものであれば、varcharフィールドで十分です。ただし、構造化されたjdataを取得する必要がある場合は、JSONフィールドが必要です。

関連する問題