본문 바로가기

카테고리 없음

Python, MySQL - 시계열 데이터 처리를 위한 upsert 알아보기_3

728x90

파이썬에서 mysql 데이터에 upsert하는 과정을 보여드리겠습니다.

 

1. 필요한 라이브러리 불러오기

import pandas as pd
import pymysql

 

2. upsert할 데이터 작성하기

price = pd.DataFrame({
    "날짜": ['2021-01-04', '2021-01-04'],
    "티커": ['000001', '000002'],
    "종가": [1320, 1315],
    "거래량": [2100, 1500]
})

args = price.values.tolist()

 

3. pymysql을 통해 필요한 정보 입력하기

con = pymysql.connect(
    user = 'root',
    password = '1234',
    host = '127.0.0.1',
    db = 'exam',
    charset = 'utf8'
)

 

 

4. 쿼리 작성을 통해 upsert 완료 후 종료하기

query = """
insert into price_2 (날짜, 티커, 종가, 거래량)
values (%s, %s, %s, %s) as new 
on duplicate key update
종가 = new.종가, 거래량 = new.거래량;
"""
#values 부분에는 입력하는 데이터의 열 갯수만큼 %s를 입력

mycursor = con.cursor()
mycursor.executemany(query, args)
con.commit()
con.close()

 

 

-모든 코드-

import pandas as pd
import pymysql 


price = pd.DataFrame({
    "날짜": ['2021-01-04', '2021-01-04'],
    "티커": ['000001', '000002'],
    "종가": [1320, 1315],
    "거래량": [2100, 1500]
})

args = price.values.tolist()

con = pymysql.connect(
    user = 'root',
    password = '1234',
    host = '127.0.0.1',
    db = 'exam',
    charset = 'utf8'
)

query = """
insert into price_2 (날짜, 티커, 종가, 거래량)
values (%s, %s, %s, %s) as new 
on duplicate key update
종가 = new.종가, 거래량 = new.거래량;
"""
#values 부분에는 입력하는 데이터의 열 갯수만큼 %s를 입력

mycursor = con.cursor()
mycursor.executemany(query, args)
con.commit()
con.close()