SQL - Python with CSV

Jungmin·2022년 11월 10일
1

SQL

목록 보기
11/17
post-custom-banner

CSV

csv에 있는 데이터를 python으로 INSERT

  1. Read CSV
  2. zerobase에 연결
import mysql.connector

conn = mysql.connector.connect(
    host = "database-1.cyxirxsmjvie.ap-northeast-1.rds.amazonaws.com",
    port = 3306,
    user = "admin",
    password = "********",
    database = "zerobase"
)
cursor = conn.cursor(buffered=True)
  1. INSERT 문 만들기
sql = "INSERT INTO police_station VALUES (%s, %s)"
  1. 데이터 입력
    ❗튜플 형태로 적용해야 ('~','~') 각 컬럼(%s)에 담길 형태로 저장됨.
    commit()은 데이터베이스에 적용하기 위한 명령
for i, row in df.iterrows():
    cursor.execute(sql,tuple(row))
    print(tuple(row))
    conn.commit()
  1. 결과 확인
cursor.execute("SELECT * FROM police_station")

result = cursor.fetchall()
for row in result:
    print(row)
  1. 결과를 pandas로 읽기
df = pd.DataFrame(result)
df


❗ csv 한글이 깨지는 경우, encoding값을 'euc-kr'로 설정

# 예시
df = pd.read_csv('2020_crime.csv', encoding='euc-kr')
df

csv 예제

▶ crime_status 테이블에 2020_crime.csv데이터 입력

import mysql.connector

conn = mysql.connector.connect(
    host = "database-1.cyxirxsmjvie.ap-northeast-1.rds.amazonaws.com",
    port = 3306,
    user = "admin",
    password = "********",
    database = "zerobase"
)
import pandas as pd
df = pd.read_csv('2020_crime.csv', encoding='euc-kr')
df.head()
구분죄종발생검거건수
0중부살인발생1
1중부살인검거1
2중부강도발생3
3중부강도검거4
4중부강간,추행발생113

▶ INSERT쿼리 작성
❗ '2020'은 데이터엔 없어서 고정으로 넣어줌

#컬럼 갯수만큼 %s
sql = """INSERT INTO crime_status VALUES ("2020", %s, %s, %s, %s)"""
cursor = conn.cursor(buffered=True)

▶ 데이터를 crime_status 테이블에 insert

for i,row in df.iterrows():
    cursor.execute(sql, tuple(row))
    print(tuple(row))
    conn.commit()

▶ crime_status 테이블 데이터 조회

cursor.execute("SELECT * FROM crime_status")

result = cursor.fetchall()
for row in result:
    print(row)


▶ Pandas로 변환해서 확인

profile
데이터분석 스터디노트🧐✍️
post-custom-banner

0개의 댓글