Мне нужно сохранить данные json файла на mysql дБ. В настоящее время mysql db mydb с таблицами1 и таблицами2. Необходимо сохранить некоторую часть файла данных json в table1, а другую в table2. Каждая таблица1 и таблица2 были созданы.
Ниже приведен пример json файла данных
{
"response": {
"dev_log": {
"data": [
{
"id": "1",
"timestamp": "2020-01-16 10:11:12",
"email": "johnd@gmail.com"
},
{
"id": "2",
"timestamp": "2020-02-27 15:33:34",
"email": "zack@gmail.com"
},
{
"id": "3",
"timestamp": "2020-02-27 15:34:07",
"email": "edy@yahoo.com"
}
],
"total_dev_log": "1423"
},
"client_log": {
"data": [
{
"customer_city": "LONDON",
"customer_login": "AAAAAAAAAAAAAA",
"customer_state": "MC",
"details": "aaaaaaaaaaa-bbbbbbbbbbbbbbb-cccccccccccccc ",
"log_number": "1",
"dept": "Sales",
"staff_id": "S123",
"staff_name": "EricY",
"timestamp": "2020-02-27 15:57:24"
},
{
"customer_city": "SINGAPORE",
"customer_login": "BBBBBBBBBBBBB",
"customer_state": "XX",
"details": "ddddddddd-eeeeeeeeeeee-ffffffffffff ",
"log_number": "1",
"dept": "Eng",
"staff_id": "S456",
"staff_name": "YongG",
"timestamp": "2020-02-27 15:57:24"
}
],
"total_hero_query": "13"
},
"response_time": "0.723494",
"transaction_id": "909122",
"transaction_status": "OK",
"transaction_time": "Fri Feb 28 15:27:51 2020"
}
}
Здесь ... в json у нас есть 'dev_log' и 'client_log'. Таким образом, все значения dev_log должны быть сохранены в table1 и client_log в table2 базы данных mydb.
Составленный ниже код
import pymysql
import os
import json
#import ast
#Read Json string file
with open('datfile.json', 'r') as f:
datDict = json.load(f)
#connect to MySQL
con = pymysql.connect(host = 'localhost',user = 'root',passwd = 'root',db = 'mydb')
cursor = con.cursor()
#Parse data to SQL insert
#for i, item in enumerate(datDict):
#id = ("id", None)
#timestamp = ("timestamp", None)
#email = ("email", None)
#cursor.execute("INSERT INTO mytable (id, timestamp, email) VALUES (%s, %s, %s)", (id, timestamp, email))
cursor.executemany("""INSERT INTO table1 VALUES(id, timestamp, email)""", datDict['response']['dev_log']['data'])
con.commit()
con.close()
Я не уверен, как сохранить файл в sql и еще в две разные таблицы. На данный момент ... я могу запустить код без каких-либо ошибок, но вернуть нулевое значение, как показано ниже;
mysql> SELECT * FROM table1;
+------+-----------+-------+
| id | timestamp | email |
+------+-----------+-------+
| NULL | NULL | NULL |
| NULL | NULL | NULL |
| NULL | NULL | NULL |
+------+-----------+-------+
3 rows in set (0.00 sec)
База данных mydb и таблица table1 созданы.
Я очень ценю вашу помощь и посоветуйте, как мне выполнить дальше.
Спасибо всем