Я пытаюсь получить некоторые данные с правительственного веб-сайта и сохранить их в двух разных таблицах. Один будет содержать имена файлов и дату выпуска (назовем это filename
), а другой будет содержать фактические данные и ключ для соединения с filename
(назовем это datasplit
)
Эти данные войдите в JSON файл, который я сохранил с веб-страницы (у меня нет API для этого). Вот небольшой пример того, как выглядит файл JSON:
{
"filename": [
{
"id": 2,
"nome": "Societa' controllate di fatto dalla Presidenza del Consiglio dei Ministri e dai Ministeri",
"aggiornamento": "04-02-2020",
"datasplit": [
{
"cf": "00081070591",
"den": "SIOG SOCIETA'ITALIANA OLEODOTTI DI GAETA SPA IN AMM.NE STRAORDINARIA",
"dm": "1513641600"
},
{
"cf": "00103540829",
"den": "INDUSTRIA SICILIANA ACIDO FOSFORICO S.P.A.IN LIQUIDAZIONE",
"dm": "1513641600"
}
]
},
{
"id": 1,
"nome": "Enti o societa' controllate dalle Amministrazioni Centrali",
"aggiornamento": "30-10-2019",
"datasplit": [
{
"cf": "00049100522",
"den": "MPS TENIMENTI POGGIO BONELLI E CHIGI SARACINI - SOC. AGRICOLA SPA",
"dm": "1513641600"
},
{
"cf": "00051010528",
"den": "SOCIETA' AGRICOLA SUVIGNANO S.R.L.",
"dm": "1513641600"
}
]
},
{
"id": 4,
"nome": "Societa' quotate inserite nell'indice FTSE MIB della Borsa italiana",
"aggiornamento": "19-12-2017",
"datasplit": [
{
"cf": "00079760328",
"den": "ASSICURAZIONI GENERALI S.P.A.",
"dm": "1513641600"
},
{
"cf": "00222620163",
"den": "FRENI BREMBO - SPA",
"dm": "1513641600"
}
]
}
]
}
Итак, я хотел бы получить таблицу filename
с полями id, nome, aggiornamento
и таблицу datasplit
с id, aggiornamento, cf, den, dm
На данный момент я получил файл JSON (сохраняя его локально) с веб-страницы и прочитал его в моей программе python.
# this works
import json
sqlstatement = ''
with open('splitdata.json', 'r') as f: #this is where I saved the website content I want to Import
jsondata = json.loads(f.read())
Я пытался создать что-то, что будет go через файл json, и создать несколько INSERT INTO table_name
SQL запросов, чтобы потом выполнить их и, наконец, сохранить мои данные в базе данных.
Итак, моя проблема в том, как сначала прочитать вложенный JSON и как вставить данные в мою базу данных (если у вас есть лучшее решение, чем создание и запуск сценария SQL).
При попытке цикла внутри JSON кажется, что он находит только один элемент.
for json in jsondata:
keylist = "("
valuelist = "("
firstPair = True
for key, value in jsondata.items():
if not firstPair:
keylist += ", "
valuelist += ", "
firstPair = False
keylist += key
if type(value) in (str, unicode):
valuelist += "'" + value + "'"
else:
valuelist += str(value)
keylist += ")"
valuelist += ")"
sqlstatement += "INSERT INTO " + TABLE_NAME + " " + keylist + " VALUES " + valuelist + "\n"
print(sqlstatement)
Я знаю, что код неполон, чтобы сгенерировать правильные операторы SQL, но мне нужна помощь, чтобы добраться до вложенной части поля JSON, datasplit
. Может быть, это не трактуется как словарь? Если да, то как я могу это исправить?