ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ฅผ ํ๊ตฌํฉ์๋ค.
<ํ๊ตญ์ ๋ ฅ๊ฑฐ๋์ ์๊ฐ๋ณ ์ ๋ ฅ์์๋ ๋ฐ์ดํฐ ์์ง>
1ํธ์ ์ด์ ๊ฒ์๊ธ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
[Python] 1. ๋ฐ์ดํฐ ์์งํ๊ธฐ (ํ๊ตญ์ ๋ ฅ๊ฑฐ๋์ ์๊ฐ๋ณ ์ ๋ ฅ์์๋ ๋ฐ์ดํฐ ์์ง, ๋ฐ์ดํฐ ๋ญ๊ธ๋ง)
ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ฅผ ํ๊ตฌํฉ์๋ค. [์์ง ์์น] https://www.data.go.kr/data/15065266/fileData.do ํ๊ตญ์ ๋ ฅ๊ฑฐ๋์_์๊ฐ๋ณ ์ ๋ ฅ์์๋_20211231 ์๊ฐ๋จ์ ์ ๊ตญ ๋ฐ์ ๋จ ์์ ๋ฐ์ดํฐ์ด๋ฉฐ ์์์์ธก์ฉ ์ ์ ์๋ฃ์์ ์
ityranno.tistory.com
3ํธ์ ์ดํ ๊ฒ์๊ธ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
[Python] 3. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ ์ฅํ๊ธฐ (ํ๊ตญ์ ๋ ฅ๊ฑฐ๋์ ์๊ฐ๋ณ ์ ๋ ฅ์์๋ ๋ฐ์ดํฐ ์์ง, Pyth
ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ฅผ ํ๊ตฌํฉ์๋ค. 1, 2ํธ์ ์ด์ ๊ฒ์๊ธ ์ฐธ๊ณ ๋ฐ๋๋๋ค. 2023.12.01 - [IT/Python] - [Python] 1. ๋ฐ์ดํฐ ์์งํ๊ธฐ (ํ๊ตญ์ ๋ ฅ๊ฑฐ๋์ ์๊ฐ๋ณ ์ ๋ ฅ์์๋ ๋ฐ์ดํฐ ์์ง, ๋ฐ์ดํฐ ๋ญ๊ธ๋ง) [Python] 1.
ityranno.tistory.com
< 2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ ์ฅํ๊ธฐ >
### ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
import pandas as pd
๋ฐ์ดํฐ ์ฝ์ด๋ค์ด๊ธฐ
file_path = "./01_data/new_data.csv"
df = pd.read_csv(file_path)
df

ํ ์ด๋ธ ์ค๊ณํ๊ธฐ
- ํ
์ด๋ธ๋ช
, ์ปฌ๋ผ๋ช
, ์ปฌ๋ผํ์
, null ์ฌ๋ถ์ ๋ํ ์ ์๊ฐ ํ์ํจ
(์ฐ์ถ๋ฌผ)
- ํ
์ด๋ธ์ ์์
- ERD
- ์คํฌ๋ฆฝํธ๋ช
์ธ์
ํ ์ด๋ธ ์ ์์ ์์ ํ์ผ ์์ฑ

์คํฌ๋ฆฝํธ ๋ช ์ธ์(SQL) ์์ฑ (word)


Heidi SQL ์ฝ๋ ์์ฑ

๊ฒฐ๊ณผ

๋ฐ์ดํฐ ์ ์ฅ ์์ ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- sqlalchemy
- ์ค์น : pip install sqlalchemy
- pymysql
- ์ค์น : conda install -c conda-forge pymysql
- ์ค์น : pip install pymysql


from sqlalchemy import create_engine
import pymysql
DB ์ฐ๊ฒฐํ๊ธฐ
### ์ฐ๊ฒฐ์ ๋ณด ์์ฑ
db_connection_info = "mysql+pymysql://์ ์ ID:๋น๋ฐ๋ฒํธ@localhost:3306/db์ด๋ฆ"
### Database ์ปค๋ฅ์
(์ฐ๊ฒฐ)ํ๊ธฐ
db_connection = create_engine(db_connection_info)
db_connection

๋ฐ์ดํฐํ๋ ์์ ์ปฌ๋ผ๋ช ์์ ํ๊ธฐ
### ๋ฐ์ดํฐํ๋ ์์ ์ปฌ๋ผ๋ช
์ ํ
์ด๋ธ์ ์ปฌ๋ผ๋ช
๊ณผ ๊ฐ๊ฒ ์์
# - ๋ฐ์ดํฐํ๋ ์์ ์ปฌ๋ผ๋ช
์์ ํ๊ธฐ
df.columns = ["ymd", "time", "power"]
df
# - ํน์ ์ปฌ๋ผ๋ช
๋ง ์์ ํ๊ณ ์ ํ ๋
# df.colums = [{"๋
๋" : "ymd"}]

๋ฐ์ดํฐ ์ ์ฅํ๊ธฐ
- name : ํ ์ด๋ธ๋ช
- con : DB ์ ์์ ๋ณด
- index : ๋ฐ์ดํฐํ๋ ์์ ์ธ๋ฑ์ค๊ฐ์ ํฌํจํ ์ง ์ฌ๋ถ(True ํฌํจ, False ๋ฏธํฌํจ)
- if_exists
* append : ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์กด ํ
์ด๋ธ์ ์ถ๊ฐ
* fail : ์๋ฌด ๋์ ํ์ง ์๊ธฐ
* replace : ๋์ผํ ํ
์ด๋ธ์ด ์กด์ฌํ๋ฉด ๊ธฐ์กด ํ
์ด๋ธ์ ์ญ์ ํ๊ณ ์๋ก์ด ๋ฐ์ดํฐ๋ก ์ ์ฅ
### ๋ฐ์ดํฐ ์ ์ฅํ๊ธฐ
# - name : ํ
์ด๋ธ๋ช
# - con : DB ์ ์์ ๋ณด
# - index : ๋ฐ์ดํฐํ๋ ์์ ์ธ๋ฑ์ค๊ฐ์ ํฌํจํ ์ง ์ฌ๋ถ(True ํฌํจ, False ๋ฏธํฌํจ)
# - if_exists
# * append : ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์กด ํ
์ด๋ธ์ ์ถ๊ฐ
# * fail : ์๋ฌด ๋์ ํ์ง ์๊ธฐ
# * replace : ๋์ผํ ํ
์ด๋ธ์ด ์กด์ฌํ๋ฉด ๊ธฐ์กด ํ
์ด๋ธ์ ์ญ์ ํ๊ณ ์๋ก์ด ๋ฐ์ดํฐ๋ก ์ ์ฅ
df.to_sql(name="time_power_demand",
con=db_connection,
index=False,
if_exist="append")

๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ๋ฐํ (์ ์ ๋๊ธฐ)
### ์ฐ๊ฒฐ ์ข
๋ฃํ๊ธฐ
db_connection.dispose()
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
### ์ ์ ์ ๋ณด
# - ์ ์ ID or ๋๋ฉ์ธ
host = "localhost"
# - ์ฌ์ฉ์๊ณ์
user = "์ฌ์ฉ์๊ณ์ "
# - ํจ์ค์๋
password = "ํจ์ค์๋"
# - ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
db = "๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
"
# - ํ๊ธ์ฒ๋ฆฌ
charset = "utf8"
# - ์กฐํ ์ ์ปฌ๋ผ๋ช
์ ๋์์ ๋ณด์ฌ์ค ์ง ์ฌ๋ถ ๊ฒฐ์
cursorclass = pymysql.cursors.DictCursor
# - ์๋๋ฐ์
autocommit = True
### DB ์ ์ํ๊ธฐ
try :
conn = pymysql.connect(host=host,
user=user,
password=password,
db=db,
charset=charset,
autocommit=autocommit,
cursorclass=cursorclass)
print("DB์ ์ ์ฑ๊ณต >>>", conn)
except :
print("DB Server Checking...")

์ปค์ ๋ฐ์์ค๊ธฐ
### ์ปค์ ๋ฐ์์ค๊ธฐ
cur = conn.cursor()
cur

Select ๋ฌธ ์์ฑ ํ DB์๊ฒ ์์ฒญ ๋ฐ ์๋ต ๋ฐ๊ธฐ
### Select ๋ฌธ ์์ฑ ํ DB์๊ฒ ์์ฒญ ๋ฐ ์๋ต ๋ฐ๊ธฐ
sql = " Select * From time_power_demand "
rs_cnt = cur.execute(sql)
print(f"{rs_cnt}๊ฑด์ด ์กฐํ๋์์ต๋๋ค.")

๋ฐ์ดํฐ ๋ฐ๋ฉ
try :
cur.close()
conn.close()
except :
print("์ด๋ฏธ ๋ชจ๋ ์ปค์์ ์ ์์ ๋ณด๊ฐ ๋ฐ๋ฉ๋์์ต๋๋ค.")