
(by. Python)
1) Read CSV

2) cunnection (with AWS RDS)

3) Cursor 생성

4) INSERT 문 만들기

5) commit( )으로 데이터 입력하기

---> 이 예제의 경우, for문이 한바퀴 돌 때마다 commit( )으로 결과를 데이터베이스에 반영하도록 작성되어 있는데///
- 만약 for문 사이사이에 commit( )을 넣지 않고 모든 코드가 실행된 가장 마지막에 작성할 경우, for문 실행 도중 fail이 생기면 마지막 줄의 commit( )까지 코드가 도달할 수 없으므로 결국 database에 추가된 내용이 반영되지 않을 수도 있음
- 본 예제와 같이 for문이 한바퀴 돌 때마다 commit( )을 실행시킨다면,
예를 들어 for문을 10번 반복하는 도중 6번째에서 fail이 발생해도 5번째 반복문 내용까지는 database에 반영된 것을 확인할 수 있음
6) 결과 확인 1
(터미널이 아닌) vs code에서 바로 출력하여 확인_print

7) 결과 확인 2

- CSV의 한글이 깨지는 경우, read_csv 할 때 encoding 값을 euc-kr로 설정할 것 (특히 우리나라 사이트에서 제공받은 CSV 파일에서 빈번하게 발생)
- write 할 때도 한글이 깨진다면 간단하게 utf8로 변환시키면 ok

crime_status 테이블에 2020_crime.csv 데이터를 입력하는 코드 작성
1) AWS RDS(database-1) zerobase에 접속
2) 2020_crime.csv 데이터(encoding='euc-kr') 읽어오기
3) INSERT 쿼리 작성
sql = "INSERT INTO crime_status VALUES ('2020', %s, %s, %s, %s)"
cursor = conn.cursor(buffered=True)
또는 
4) 데이터를 crime_status 테이블에 INSERT
5) crime_status 테이블의 데이터 조회(결과 확인)

6) 조회한 결과를 Pandas로 변환해서 확인하기

- SQL 테이블 생성 --> csv 파일 데이터 insert --> pandas(df)로 읽어오기
1. 계정 로그인
import mysql.connector
conn = mysql.connector.connect(
host = "database-1.cexprgis0las.ap-northeast-2.rds.amazonaws.com",
port = 3306,
user = "admin",
password = "***********",
database = "zerobase"
)
2. pandas로 데이터프레임 살펴보기
import pandas as pd
df = pd.read_csv('Seoul_CCTV.csv', encoding='utf-8')
df.head(2)
3. csv파일을 pandas로 읽어오기
sql = "CREATE TABLE cctv (기관명 varchar(8), 소계 int, 2013년도이전 int, 2014년 int, 2015년 int, 2016년 int)"
cursor = conn.cursor(buffered=True)
cursor.execute(sql)
4. 데이터를 CCTV테이블에 insert
sql = "INSERT INTO cctv VALUES (%s, %s, %s, %s, %s, %s)"
cursor = conn.cursor(buffered=True)
for i, row in df.iterrows():
cursor.execute(sql, tuple(row))
print(tuple(row))
conn.commit()
5. CCTV 테이블 조회하여 데이터 확인
cursor.execute("SELECT * FROM cctv")
result = cursor.fetchall()
for row in result:
print(row)
6. 조회된 데이터를 pandas로 변환하여 출력
df = pd.DataFrame(result)
df.head()