본문 바로가기
Cloud/AWS

[2021.08.05] 인턴 +157 How to insert json data into mysql(AWS EC2 Server) Using Python?

by injekim97 2021. 8. 5.
반응형

[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()

 

 

0804_JSON_INSERT_DATA(Using Python).ipynb
0.00MB

 

 

 

 

<출력 결과>

 

 

-> 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()
반응형

댓글