💡 .commit()
: 데이터를 DB에 저장 시키는 명령어
(for문 중 fail이 나도 fial 전까지의 데이터가 저장 됨)
🙄 csv 한글이 깨지는 경우, encoding 값을 euc-kr
로 설정
(특히 한국 사이트에서 제공받은 csv 파일들)
import pandas as pd
df = pd.read_csv('police_station.csv')
df.tail()
import mysql.connector
conn = mysql.connector.connect(
host = "database-1.cj22sogoe8oa.ap-southeast-2.rds.amazonaws.com",
port = 3306,
user = "admin",
password = "94woals!!",
database = "zerobase"
)
cursor = conn.cursor(buffered=True)
cursor = conn.cursor(buffered=True)
sql = "INSERT INTO police_station VALUES (%s, %s)"
for i, row in df.iterrows():
cursor.execute(sql,tuple(row))
print(tuple(row))
conn.commit()
cursor.execute("SELECT * FROM police_station")
result = cursor.fetchall()
for row in result:
print(row)
df = pd.DataFrame(result)
df
import mysql.connector
conn = mysql.connector.connect(
host = "database-1.cj22sogoe8oa.ap-southeast-2.rds.amazonaws.com",
port = 3306,
user = "admin",
password = "94woals!!",
database = "zerobase"
)
import pandas as pd
df = pd.read_csv('2020_crime.csv', encoding='euc-kr')
df.head()
# %s, %s, %s, %s : 컬럼 4개니까.
sql = "INSERT INTO crime_status VALUES ('2020', %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() # 실행 될 때 마다 commit을 날려 저장
cursor.execute("SELECT * FROM crime_status")
result = cursor.fetchall()
for row in result:
print(row)
df = pd.DataFrame(result)
df
import mysql.connector
conn = mysql.connector.connect(
host = "database-1.cj22sogoe8oa.ap-southeast-2.rds.amazonaws.com",
port = 3306,
user = "admin",
password = "94woals!!",
database = "zerobase"
)
import pandas as pd
df = pd.read_csv('Seoul_CCTV.csv', encoding='utf-8')
df.tail()
sql = 'CREATE TABLE cctv (기관명 varchar(0), 소계 int, 2013년도이전 int, 2014년 int, 2015년 int, 2016년 int)'
cursor = conn.cursor(buffered=True)
cursor.execute(sql)
C:\Users\PC\Documents\sql_ws> mysql -h "database-1.cj22sogoe8oa.ap-southeast-2.rds.amazonaws.com" -P 3306 -u admin -p94woals!! zerobase
mysql> show tables;
+--------------------+
| Tables_in_zerobase |
+--------------------+
| cctv |
| celeb |
| crime_status |
| oil_price |
| person |
| police_station |
| refueling |
| snl_show |
| sql_file |
| test1 |
| test2 |
+--------------------+
11 rows in set (0.15 sec)
mysql> desc cctv;
+--------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------+------+-----+---------+-------+
| 기관명 | varchar(0) | YES | | NULL | |
| 소계 | int | YES | | NULL | |
| 2013년도이전 | int | YES | | NULL | |
| 2014년 | int | YES | | NULL | |
| 2015년 | int | YES | | NULL | |
| 2016년 | int | YES | | NULL | |
+--------------+------------+------+-----+---------+-------+
6 rows in set (0.17 sec)
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()
cursor.execute("select * from cctv")
result = cursor.fetchall()
for row in result:
print(row)
df = pd.DataFrame(result)
df.head()
mysql> show tables;
+--------------------+
| Tables_in_zerobase |
+--------------------+
| cctv |
| celeb |
| crime_status |
| oil_price |
| person |
| police_station |
| refueling |
| snl_show |
| sql_file |
| test1 |
| test2 |
+--------------------+
11 rows in set (0.15 sec)
mysql> select * from cctv
-> ;
+----------+------+--------------+--------+--------+--------+
| 기관명 | 소계 | 2013년도이전 | 2014년 | 2015년 | 2016년 |
+----------+------+--------------+--------+--------+--------+
| 강남구 | 3238 | 1292 | 430 | 584 | 932 |
| 강동구 | 1010 | 379 | 99 | 155 | 377 |
| 강북구 | 831 | 369 | 120 | 138 | 204 |
| 강서구 | 911 | 388 | 258 | 184 | 81 |
| 관악구 | 2109 | 846 | 260 | 390 | 613 |
| 광진구 | 878 | 573 | 78 | 53 | 174 |
| 구로구 | 1884 | 1142 | 173 | 246 | 323 |
| 금천구 | 1348 | 674 | 51 | 269 | 354 |
| 노원구 | 1566 | 542 | 57 | 451 | 516 |
| 도봉구 | 825 | 238 | 159 | 42 | 386 |
| 동대문구 | 1870 | 1070 | 23 | 198 | 579 |
| 동작구 | 1302 | 544 | 341 | 103 | 314 |
| 마포구 | 980 | 314 | 118 | 169 | 379 |
| 서대문구 | 1254 | 844 | 50 | 68 | 292 |
| 서초구 | 2297 | 1406 | 157 | 336 | 398 |
| 성동구 | 1327 | 730 | 91 | 241 | 265 |
| 성북구 | 1651 | 1009 | 78 | 360 | 204 |
| 송파구 | 1081 | 529 | 21 | 68 | 463 |
| 양천구 | 2482 | 1843 | 142 | 30 | 467 |
| 영등포구 | 1277 | 495 | 214 | 195 | 373 |
| 용산구 | 2096 | 1368 | 218 | 112 | 398 |
| 은평구 | 2108 | 1138 | 224 | 278 | 468 |
| 종로구 | 1619 | 464 | 314 | 211 | 630 |
| 중구 | 1023 | 413 | 190 | 72 | 348 |
| 중랑구 | 916 | 509 | 121 | 177 | 109 |
+----------+------+--------------+--------+--------+--------+
25 rows in set (0.15 sec)