๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/Python

[Python] 2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๊ธฐ (ํ•œ๊ตญ์ „๋ ฅ๊ฑฐ๋ž˜์†Œ ์‹œ๊ฐ„๋ณ„ ์ „๋ ฅ์ˆ˜์š”๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, Python-mariaDB ์—ฐ๊ฒฐ, ๋ฐ์ดํ„ฐ ๋žญ๊ธ€๋ง)

by ITyranno 2023. 12. 2.
728x90
๋ฐ˜์‘ํ˜•

 

 

 

 

 

 

 

 

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„๋ฅผ ํƒ๊ตฌํ•ฉ์‹œ๋‹ค.

 

 

 

 

 

 

 

 

 

<ํ•œ๊ตญ์ „๋ ฅ๊ฑฐ๋ž˜์†Œ ์‹œ๊ฐ„๋ณ„ ์ „๋ ฅ์ˆ˜์š”๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘>

 

 

 

 

 

 

 

 

1ํŽธ์€ ์ด์ „ ๊ฒŒ์‹œ๊ธ€ ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

 

2023.12.01 - [IT/Python] - [Python] 1. ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ํ•˜๊ธฐ (ํ•œ๊ตญ์ „๋ ฅ๊ฑฐ๋ž˜์†Œ ์‹œ๊ฐ„๋ณ„ ์ „๋ ฅ์ˆ˜์š”๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ๋ฐ์ดํ„ฐ ๋žญ๊ธ€๋ง)

 

[Python] 1. ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ํ•˜๊ธฐ (ํ•œ๊ตญ์ „๋ ฅ๊ฑฐ๋ž˜์†Œ ์‹œ๊ฐ„๋ณ„ ์ „๋ ฅ์ˆ˜์š”๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ๋ฐ์ดํ„ฐ ๋žญ๊ธ€๋ง)

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„๋ฅผ ํƒ๊ตฌํ•ฉ์‹œ๋‹ค. [์ˆ˜์ง‘ ์œ„์น˜] https://www.data.go.kr/data/15065266/fileData.do ํ•œ๊ตญ์ „๋ ฅ๊ฑฐ๋ž˜์†Œ_์‹œ๊ฐ„๋ณ„ ์ „๋ ฅ์ˆ˜์š”๋Ÿ‰_20211231 ์‹œ๊ฐ„๋‹จ์œ„ ์ „๊ตญ ๋ฐœ์ „๋‹จ ์ˆ˜์š” ๋ฐ์ดํ„ฐ์ด๋ฉฐ ์ˆ˜์š”์˜ˆ์ธก์šฉ ์ž ์ •์ž๋ฃŒ์ž„์„ ์•Œ

ityranno.tistory.com

 

 

 

3ํŽธ์€ ์ดํ›„ ๊ฒŒ์‹œ๊ธ€ ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

2023.12.04 - [IT/Python] - [Python] 3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๊ธฐ (ํ•œ๊ตญ์ „๋ ฅ๊ฑฐ๋ž˜์†Œ ์‹œ๊ฐ„๋ณ„ ์ „๋ ฅ์ˆ˜์š”๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, Python-mariaDB ์—ฐ๊ฒฐ, ๋ฐ์ดํ„ฐ ๋žญ๊ธ€๋ง)

 

[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("์ด๋ฏธ ๋ชจ๋“  ์ปค์„œ์™€ ์ ‘์†์ •๋ณด๊ฐ€ ๋ฐ˜๋‚ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.")

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•