본문 바로가기

전체 글

(50)
Python, MySQL - 시계열 데이터 처리를 위한 upsert 알아보기_3 파이썬에서 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 =..
Python, MySQL - 시계열 데이터 처리를 위한 upsert 알아보기_2 sql에서 upsert 사용방법 insert into @table (arg1, arg2, arg3) values (@arg1, @arg2, @arg3) on duplicate key update (key를 제외한 update할 칼럼) arg2 = @arg2, arg3 = @arg3 파이썬으로 upsert하는 방법을 보여주기 전에 MySQL에서 upsert를 먼저 보여드리겠습니다. 사용 예시를 보여주기 위해 exam db에 price테이블을 만든 후 데이터를 입력해보겠습니다. use exam; create table price_2( 날짜 varchar(10), 티커 varchar(6), 종가 int, 거래량 int, primary key(날짜, 티커) ); insert into price_2 (날짜, 티커..
Python, MySQL - 시계열 데이터 처리를 위한 upsert 알아보기_1 to_sql() 함수를 이용해 시계열 데이터를 SQL에 저장할 경우 발생하는 문제와 upsert 기능을 사용하는 방법에 대해 설명해보겠습니다, 1. insert :시간이 지남에 따라 데이터가 추가됨 2. update :간혹 과거 데이터가 수정됨 입력하고자 하는 데이터가 기존 테이블에 값이 있는 경우 새로운 데이터로 업데이트하고 값이 없는 경우에는 새로운 데이터를 추가하는 기능을 mysql에서는 'upsert'라고 부릅니다. 이제 시계열 데이터를 데이터베이스에 추가하는 예제를 살펴보겠습니다. #1. 필요한 라이브러리 불러오기 import pandas as pd from sqlalchemy import create_engine from sqlalchemy_utils import create_database ..
pandas로 파이썬에 SQL사용하기 - 데이터 프레임을 SQL DB에 저장 데이터 프레임 형태의 데이터를 sql db에 저장하는 방법을 배워봅시다. 1. 예시 데이터 불러오기 저는 seaborn에서 제공하는 iris데이터 프레임을 가져와서 사용하겠습니다. 이것은 임의의 데이터 이므로 여러분은 원하시는 데이터 프레임을 사용하시면 되겠습니다. import seaborn as sns iris = sns.load_dataset('iris') 2. create engine # engine = create_engine('mysql+pymysql://[사용자명]:[비밀번호]@[호스트:포트]/[사용할 데이터베이스]') engine = create_engine('mysql+pymysql://root:1234@127.0.0.1:3306/nameofdb') 3. 데이터를 sql db에 저장 iri..
pandas로 파이썬에 SQL사용하기 - DB에 접속하여 데이터 불러오기 pymysql로 sql의 테이블을 불러오면 튜플 형태로 불러와집니다. 이것은 작업하기 편한 데이터프레임이 아닙니다. pandas를 통해 쉽게 sql 테이블 데이터를 불러오는 방법을 배워봅시다. 1. 필요한 라이브러리 불러오기 import pandas as pd from sqlalchemy import create_engine pandas에서 sql 연결할 때는 SQLalchemy ORM(Object Relational Mapping)을 사용함 ORM이란 어플리케이션과 데이터베이스를 연결할 때 SQL 언어가 아닌 어플리케이션 개발 언어로 데이터베이스를 접근할 수 있게 해주는 툴을 뜻합니다. 파이썬 코드를 SQL 쿼리로 자동 변환하여 SQL 쿼리를 따로 작성할 필요 없이 파이썬 코드를 작성하는 것만으로 데이..
파이썬에서 SQL(pymysql) - data 입력, 수정, 삭제 1. 라이브러리 불러오기 import pymysql 2. 연결에 필요한 정보 입력하여 연결하기 con = pymysql.connect( user = 'root', #사용자명 password = '1234', #비밀번호 host = '127.0.0.1', #허용 접속 ip, 일반적으로 localhost는 127.0.0.1 db = 'nameofdb', #사용할 데이터베이스 charset = 'utf8' #인코딩방법 ) 3. 데이터베이스 커서 객체 가져오기 mycursor = con.cursor() # 데이터 베이스에서 특정 행을 가르키는 커서 객체를 불러옴 4. 작업할 쿼리 실행하기 query = """ insert into nameoftable (col_1, col_2, col_3) values ('00..
파이썬에서 SQL(pymysql) - 연결하여 data 불러오기 1. 라이브러리 불러오기 import pymysql 2. 연결에 필요한 정보 입력하여 연결하기 con = pymysql.connect( user = 'root', #사용자명 password = '1234', #비밀번호 host = '127.0.0.1', #허용 접속 ip, 일반적으로 localhost는 127.0.0.1 db = 'nameofdb', #사용할 데이터베이스 charset = 'utf8' #인코딩방법 ) 3. 데이터베이스 커서 객체 가져오기 mycursor = con.cursor() # 데이터 베이스에서 특정 행을 가르키는 커서 객체를 불러옴 4. 작업할 쿼리 실행하기 query = """ select * from nameoftable; """ #작업할 쿼리 내용 작성 mycursor.exe..
MySQL - 윈도우 함수 윈도우 함수 사용방법 [윈도우 함수] over ([partition by [열 리스트]] order by [정렬용 열 리스트]) 여기서 partition by는 생략 가능합니다 #윈도우 함수로 사용할 수 있는 함수 -윈도우 전용 함수 rank, dense_rank, row_number 등 rank: 같은 순위인 행이 여러개 있으면 후순위로 건너뜀 예) 1위가 3개인 경우: 1위, 1위, 1위, 4위, ··· dense_rank: 같은 순위인 행이 여러개 있어도 후순위를 건너뛰지 않음 예) 1위가 3개인 경우: 1위, 1위, 1위, 2위, ··· row_number: 순위와 상관없이 연속 번호를 부여 예) 1위가 3개인 경우: 1위, 2위, 3위, 4위, ··· 윈도우 전용 함수는 원칙적으로 select ..