λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
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
λ°˜μ‘ν˜•

loading