[2021.08.05] 인턴 +157 How to insert json data into mysql(AWS EC2 Server) Using Python?
해당 게시글은, AWS EC2에 있는 가상머신 mysql - server에 json 데이터를 넣는 방법이다.
우선 넣기 전에 setting 해줘야 하는게 있다.
1. json 데이터 파일 컬럼 및 값에 맞게, 데이터베이스(스키마)를 생성해준 후, 테이블 명을 생성해줘야 한다
e.g : 여기선 디비명 AIR , 테이블 명 : 0804_AIR_JSON으로 만들어 놨다.
2. 그런 다음에 아래의 파이썬 코드로 데이터를 넣으면 된다.
-> 지금 사진을 보면 해당 테이블에 값이 비어있다.
* postman에서 받은 json 데이터 파일을 코드에서 지정해준 경로에 저장해줘야함(postman에서 데이터 저장하는 방법)
-> 저장할 때 파일 형식을 .json으로 해주면 json으로 저장됨(.csv면 csv로 저장)
<full code>
import pymysql
import json
# Azure or AWS DB 연동
def get_db():
db = pymysql.connect(
host='mysql.monorama.kr',
port=3306,
user='admin',
passwd='1/zw;GytAwx*',
db='AIR',
charset='utf8'
)
return db
# json data insert
def insert_json_data():
db = get_db()
mycursor = db.cursor()
json_data = open("C:\\Temp\\0803air.json").read()
json_obj = json.loads(json_data)
try :
for item in json_obj:
#print(item)
SerialNum = item.get("serialNum")
Co2 = item.get("co2")
Humid = item.get("humid")
Pm10 = item.get("pm10")
Pm5 = item.get("pm5")
Temp = item.get("temp")
Vocs = item.get("vocs")
timeZone = item.get("timeZone")
ReportTime = item.get("reportTime")
Lat = item.get("lat")
Lng = item.get("long")
# json 데이터 넣을 떄, insert into table명(table 컬럼 순서대로) value (%s,%s,%s,%s) ★★★ 꼭 %s 후 , 콤마 찍어줘야함 ★★★
# 그런 후에, 파일을 읽어오기 때문에 뒤에 괄호를 치고, 위에 for문으로 불러드린 json파일의 컬럼 값들을 가져와서 저장해주는 것임
mycursor.execute("insert into 0804_AIR_JSON(SerialNum,Co2,Humid,Pm10,Pm5,Temp,Vocs,timeZone,ReportTime,Lat,Lng) value (%s ,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",(SerialNum,Co2,Humid,Pm10,Pm5,Temp,Vocs,timeZone,ReportTime,Lat,Lng))
db.commit()
db.close()
print("=======성공적으로 json data 삽입을 완료하였습니다.=====")
except Exception as e:
print("json 데이터 삽입 실패",e)
db.close()
# ----------------------------------- main --------------------------------
insert_json_data()
<출력 결과>
-> postman에서 저장한 json file data이다. (형광펜으로 색칠한 Co2의 값이 mysql에 잘 들어 간지 확인 해보자)
* 여기선 차례대로, 393.2549019607843,404.8833333333333,417.7704918032787 이다.
-> Mysql 에서, 밑줄친 Co2의 값을 보면, 정상적으로 json 파일이 들어간 것을 확인할 수 있다.
---------------------------------------------------------------------------------------------------------------------------
<리눅스에서 사용하는 json_data>
# Azure or AWS DB 연동
def get_db():
db = pymysql.connect(
host='mysql.monorama.kr',
port=3306,
user='admin',
passwd='1/zw;GytAwx*',
db='AIR',
charset='utf8'
)
return db
# json data insert
def insert_json_data():
db = get_db()
mycursor = db.cursor()
# json multi file 경로 지정
json_path = "/home/ubuntu/json_file/*.json"
arr = []
#json_data = open("/home/ubuntu/json_file/*.json").read()
for i in glob.glob(json_path):
print(i)
arr.append(i)
try :
for i in range(0,2):
json_data = open(arr[i]).read()
json_obj = json.loads(json_data)
for item in json_obj:
#print(item)
SerialNum = item.get("serialNum")
Co2 = item.get("co2")
Humid = item.get("humid")
Pm10 = item.get("pm10")
Pm5 = item.get("pm5")
Temp = item.get("temp")
Vocs = item.get("vocs")
timeZone = item.get("timeZone")
ReportTime = item.get("reportTime")
Lat = item.get("lat")
Lng = item.get("long")
# json 데이터 넣을 떄, insert into table명(table 컬럼 순서대로) value (%s,%s,%s,%s) ★★★ 꼭 %s 후 , 콤마 찍어줘야함 ★★★
# 그런 후에, 파일을 읽어오기 때문에 뒤에 괄호를 치고, 위에 for문으로 불러드린 json파일의 컬럼 값들을 가져와서 저장해주는 것임
mycursor.execute("insert into 0804_AIR_JSON(SerialNum,Co2,Humid,Pm10,Pm5,Temp,Vocs,timeZone,ReportTime,Lat,Lng) value (%s ,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",(SerialNum,Co2,Humid,Pm10,Pm5,Temp,Vocs,timeZone,ReportTime,Lat,Lng))
db.commit()
db.close()
print("=======성공적으로 json data 삽입을 완료하였습니다.=====")
except Exception as e:
print("json 데이터 삽입 실패",e)
db.close()
# ----------------------------------- main --------------------------------
insert_json_data()
댓글