situation if date == '' : continue 시간이 null인 경우는 insert 안 하게끔 해줬으나 time data 0000-00-00 00:00:00 doesn't match format specified 이런 오류가 떴다. reason 이유는 아직 잘 모르겠다 ,, solution DB에 insert할 때 없는 경우, null이 아닌 0000-00-00 00:00:00로 업로드 된 것 따라서, if date == '0000-00-00 00:00:00' : continue 이렇게 해줘야 오류를 피할 수 있다.
pymysql을 이용하여 db 연동하기 python에서 mysql 데이터베이스를 사용하기 위해 우선 python DB API 표준을 따르는 MySQL DB 모듈을 다운 받아 설치하다. MySQL DB 를 지원하는 Python 모듈은 여러 가지가 있는데, 여기서 pymysql 이라는 모듈을 사용해 본다. 참고로, 다른 MySQL 모듈을 사용하더라도 동일한 API를 사용하게 된다. 1. pymysql 설치하기 먼저, pymysql 라이브러리를 설치해줘야 한다. pip을 이용하여 간단하게 설치해주자. python3 -m pip install PyMySQL 2. db 연결하기 pymysql에 connect라는 함수를 이용하여 db 서버에 연결 할 수 있다. 1) PyMySql 모듈을 import 한다. 2) p..
한번에 insert 여러 개 하기 DB에 업로드할 때 보통은 한 줄씩 하는 경우가 많다. 한 줄씩 해도 상관은 없지만 업로드하는 행 수가 100 만행, 1000 만행이 넘어간다면??? 처음에 구글링을 통해 알게 된 방법은 values (값 1, 값 2), (값 3, 값 4) 이렇게 values 뒤에 여러개를 붙이면 된다는데 어느 세월에 다 하겠나 싶고.. 데이터 분석에 있어서 시간 단축은 떼려야 뗄 수 없는 관계이다. 10분이라도 줄이기 위해 생각한 방법인데 예상보다 업로드 속도가 매우매우 빠르다. 예제 코드 # 빈 리스트 생성 sql_rows = [] # 리스트에 한줄씩 추가 sql_row = '({},{},{},{})'.format(id, name, date, value) sql_rows.append..
열이 아닌 행끼리 계산하기 보통 dataframe의 계산을 다룰 땐 열끼리 지지고 볶고 하는 게 다반사인데.. 이번엔 열이 아닌 행과 행의 연산이 필요했다. 시간에 따른 여러 검사의 수치값이 있었고, 이를 시간마다 값의 차이를 알아내야 하는 게 이번 미션이였다. 흠흠.. 다들 행끼리는 계산을 안 하는 건지 검색을 잘 못한 건지 아무리 검색해도 안 나오더라 ㅜㅇㅜ 구글링 실력도 실력이란 걸 다시 한번 깨닫고.. 전치를 시켜야 하나 고민하던 중 내가 원하는 결괏값을 도출할 수 있는 함수를 찾았다. diff 함수 result[['delta_aaa', 'delta_bbb', 'delta_ccc', 'delta_ddd']] = result[['aaa', 'bbb', 'ccc', 'ddd']].diff() 생각보다..
중복 확인 SELECT * FROM 테이블 WHERE 검색할 필드 IN ( SELECT 검색할 필드 FROM 테이블 GROUP BY 검색할 필드 HAVING COUNT(*) > n) 중복 데이터 전체 확인 select A.* from 테이블 A, (select 검색할필드명 from 테이블 group by 검색할 필드 having count(*) > n) B where A.필드 = B.필드 중복이 2개일 경우 중복행 중 1개만 제거 DELETE FROM notes WHERE id IN (SELECT MIN(id) FROM notes GROUP BY name, date, value HAVING COUNT(*) > 1) 여기서 id 는 AUTO_INCREMENT 로, 기본 키 값을 증가의 자동 시퀀스를 생성하..
가장 가까운 날짜/시간 찾기 코딩을 하다 보면 시간에 대해서 많이 다루게 되는데 이 시간 데이터를 연산이나 비교 등을 할 때가 많다. 그 중에서도 이번에는 가장 근접한 시간을 찾아야 하는데 아이디어가 떠오르지 않아 처음에는 많이 헤맸다. 가장 근접한 수 찾는 함수 먼저, 가장 근접한 수를 찾는 함수를 만들었다. def find_nearest(array, value): array = np.asarray(array) idx = (np.abs(array - value)).argmin() return array[idx] array에 시간 리스트를 넣고 value에 가장 근접했으면 하는 시간을 넣으면 근접한 시간이 return 될 줄 알았으나,, 시간 데이터는 절댓값을 쓸 수 없어 또 한 번 난관이 닥쳤다. 그래..