Правильный способ разбора JSON в Python - PullRequest
0 голосов
/ 01 мая 2018

Мне было дано задание прочитать json из URL, а затем проанализировать его на python. Каждое поле будет присвоено переменной для хранения значения. Затем значение будет сохранено в таблице postgres.

Пример Json

{
 "forecasts": 
[
 {
   "class": "fod_long_range_daily",
   "expire_time_gmt": 1525126617,
   "night": {
     "fcst_valid": 1525158000,
     "fcst_valid_local": "2018-05-01T19:00:00+1200",
     "golf_category": ""
   },
   "day": {
     "uv_warning": 0,
     "uv_desc": "Moderate",
     "golf_index": 10,
     "golf_category": "Excellent"
   }
 }
]
}

Мне сказали, что таким образом я могу разобрать JSON и прочитать его в postgres. Могу ли я знать, правильно ли я поступаю? Будет ли проблема с производительностью?

Стиль 1:

import urllib3
import psycopg2
import json

conn = psycopg2.connect(host="localhost", database="nzaus", 
user="admin", password="123321")
print("Database Connected")
cur = conn.cursor()
rowcount = cur.rowcount

http = urllib3.PoolManager()
url = "https://api.data.com/v1/geocode/-35.228208/174.095969/forecast/daily/15day.json?language=en-US&units=m&apiKey=1234"
try:
    response = http.request('GET', url)
    data = json.loads(response.data.decode('utf-8'))

    for item in data['forecasts']:
        class = None
        time = None
        fcst_valid = None
        golf_category = None

        result = []

        class = item['class']
        time  = item['expire_time_gmt']
        fcst_valid = item['night']['fcst_valid']
        golf_category = item['morning']['golf_category']
        result = [class,time,fcst_valid,golf_category]

        cur.execute("""INSERT into datatable 
                       VALUES
                       ( %s,
                         %s,
                         %s,
                         %s,
                       )""",(result))
        conn.commit()
        cur.close()
 except IOError as io:
    print("cannot open")
...