ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ฅผ ํ๊ตฌํฉ์๋ค.
1, 2ํธ์ ์ด์ ๊ฒ์๊ธ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
< DB ํ๋ก๊ทธ๋จ ์์ >
1. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ์ ๋ณด ์ค๋น
2. DB ์ ์ํ๊ธฐ : ์ปค๋ฅ์
(connect)
3. ์ปค์ ๋ฐ์์ค๊ธฐ : currsor()
4. ๊ตฌ๋ฌธ ์์ฑํ๊ธฐ : sql(์กฐํ, ์
๋ ฅ, ์์ , ์ญ์ )
5. ๊ตฌ๋ฌธ ์คํํ๊ธฐ : execute() -> ๊ฒฐ๊ณผ๊ฐ์ ์ฒดํฌ
6. ์กฐํ์ธ ๊ฒฝ์ฐ ์ปค์์์ ๋ฐ์ดํฐ ์ถ์ถํ๊ธฐ
-> ํ๊ฑด : fetchone()
-> ์ฌ๋ฌ๊ฑด : fetchall()
7. ์กฐํ๊ฒฐ๊ณผ ๋ฐ์ดํฐํ๋ ์ ๋๋ ์นํ์ด์ง์ ์ถ๋ ฅ
-> ๋ฐ์ดํฐํ๋ ์ : pd.DataFrame(์ฌ๋ฌ๊ฑด), pd.DataFrame([ํ๊ฑด])
8. ์กฐํ๊ฐ ์๋ ๊ฒฝ์ฐ : ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ์กฐ๊ฑด์ผ๋ก ํ์ธํ๊ธฐ if "์ฒ๋ฆฌ ์ฑ๊ณต" ~ else "์ฒ๋ฆฌ ์คํจ"
9. DB์ ๋ณด ๋ฐํํ๊ธฐ
- ๋ฐํ ์์ : currsor > connect
< ์กฐํ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฌ๊ฑด์ธ ๊ฒฝ์ฐ >
rows = cur.fetchall()
rows
ymd_power_df = pd.DataFrame(rows)
# - ์ปฌ๋ผ๋ช
์์ด ๋ฐ์์จ ๊ฒฝ์ฐ
# - [(), ()...]
# ymd_power_df = pd.DataFrame(rows, colums=["ymd", "time", "power"])
ymd_power_df
< ํ ๊ฑด ์กฐํํ๊ธฐ >
ํ ๊ฑด ์กฐํ๋ฅผ ์ํ sql ๊ตฌ๋ฌธ ์์ฑํ๊ธฐ
### ํ ๊ฑด ์กฐํ๋ฅผ ์ํ sql ๊ตฌ๋ฌธ ์์ฑํ๊ธฐ
sql = """
Select * From time_power_demand
Where ymd = '2021-01-01'
And time = '1์'
"""
sql
SQL ๊ตฌ๋ฌธ์ DB ์๋ฒ์ ์์ฒญํ๊ณ , ๊ฒฐ๊ณผ ๋ฐ์์ค๊ธฐ
### SQL ๊ตฌ๋ฌธ์ DB ์๋ฒ์ ์์ฒญํ๊ณ , ๊ฒฐ๊ณผ ๋ฐ์์ค๊ธฐ
cur.execute(sql)
row = cur.fetchone()
row
๋ฐ์ดํฐํ๋ ์์ ๋ด์์ ๋ณด์ฌ์ฃผ๊ธฐ
### ๋ฐ์ดํฐํ๋ ์์ ๋ด์์ ๋ณด์ฌ์ฃผ๊ธฐ
ymd_power_one = pd.DataFrame([row])
ymd_power_one
< ๋ฐ์ดํฐ ์ ๋ ฅํ๊ธฐ (insert) >
์ ๋ ฅ์ ์ํ ๊ตฌ๋ฌธ ์์ฑํ๊ธฐ
### ์
๋ ฅ์ ์ํ ๊ตฌ๋ฌธ ์์ฑํ๊ธฐ
sql = """
Insert Into time_power_demand(
ymd, time, power
) Values (
'2020-12-31', '24์', 1234
)
"""
sql
์ ์ฅ ์์ฒญ ์์๋ ๊ฒฐ๊ณผ๊ฐ์ด ์ซ์๊ฐ์ผ๋ก ๋ณํ๋ฉ๋๋ค.
### ์ ์ฅ ์์ฒญ ์์๋ ๊ฒฐ๊ณผ๊ฐ์ด ์ซ์๊ฐ์ผ๋ก ๋ณํ๋ฉ๋๋ค.
rs_cnt = cur.execute(sql)
rs_cnt
print(f"{rs_cnt}๊ฑด์ด ์ฒ๋ฆฌ๋์์ต๋๋ค.")
์ฒ๋ฆฌ๊ฐ ์ ๋์๋์ง ํ์ธํ๊ธฐ
### ์ฒ๋ฆฌ๊ฐ ์ ๋์๋์ง ํ์ธํ๊ธฐ
# - 0๋ณด๋ค ํฌ๋ฉด "1๊ฑด์ด ์
๋ ฅ๋์์ต๋๋ค." ์ถ๋ ฅ
# - 0์ดํ์ธ ๊ฒฝ์ฐ์๋ "์
๋ ฅ๋์ง ์์์ต๋๋ค." ์ถ๋ ฅ
if rs_cnt > 0 :
print(f"{rs_cnt}๊ฑด์ด ์
๋ ฅ๋์์ต๋๋ค.")
else :
print("์
๋ ฅ๋์ง ์์์ต๋๋ค.")
< ์์ ํ๊ธฐ ์ฒ๋ฆฌํ๊ธฐ >
ymd๊ฐ 2020-12-31์ด๊ณ , ์๊ฐ์ด 24์์ธ ํ์ ์ฐพ์์ power์ ๊ฐ์ 5678๋ก ์์ ํ๊ธฐ
### ymd๊ฐ 2020-12-31์ด๊ณ , ์๊ฐ์ด 24์์ธ ํ์ ์ฐพ์์
# power์ ๊ฐ์ 5678๋ก ์์ ํ๊ธฐ
sql = """
UPDATE time_power_demand
SET POWER = 3333
WHERE ymd = '2020-12-31'
AND TIME = '24์'
"""
sql
< ์ญ์ ํ๊ธฐ ์ฒ๋ฆฌํ๊ธฐ >
ymd๊ฐ 2020-12-31์ด๊ณ , ์๊ฐ์ด 24์์ธ ํ์ ์ฐพ์์ ์ญ์ ํ๊ธฐ
### ymd๊ฐ 2020-12-31์ด๊ณ , ์๊ฐ์ด 24์์ธ ํ์ ์ฐพ์์
# ์ญ์ ์ํค๊ธฐ
sql = """
DELETE FROM time_power_demand
WHERE ymd = '2020-12-31'
AND TIME = '24์'
"""
### DB์ SQL ๊ตฌ๋ฌธ ์์ฒญํ๊ณ ๊ฒฐ๊ณผ ๋ฐ์์ค๊ธฐ
rs_cnt = cur.execute(sql)
if rs_cnt > 0 :
print(f"{rs_cnt}๊ฑด์ด ์ญ์ ๋์์ต๋๋ค.")
else :
print("์ญ์ ์คํจ ใ
")
< ํ ๋ฒ๋ ๊ตฌ๋งคํ ์ ์ด ์๋ ํ์์ ๋ณด๋ฅผ ์กฐํ >
์กฐํ์ปฌ๋ผ : ํ์์์ด๋, ํ์์ด๋ฆ
### ํ ๋ฒ๋ ๊ตฌ๋งคํ ์ ์ด ์๋ ํ์์ ๋ณด๋ฅผ ์กฐํํด์ฃผ์ธ์
# - ์กฐํ์ปฌ๋ผ : ํ์์์ด๋, ํ์์ด๋ฆ
sql = """
SELECT mem_id, mem_name
FROM member
WHERE not EXISTS(SELECT cart_member from cart
WHERE cart_member = mem_id)
"""
sql
rs_cnt = cur.execute(sql)
if rs_cnt > 0 :
print(f"{rs_cnt}๊ฑด ์กฐํ๋์์ต๋๋ค.")
else :
print("์กฐํ ์คํจ....ใ
ใ
")
์ปค์๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฒฐ๊ณผ ์ถ์ถํ๊ธฐ
### ์ปค์๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฒฐ๊ณผ ์ถ์ถํ๊ธฐ
rows = cur.fetchall()
rows
๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ง๋ค๊ธฐ
### ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ง๋ค๊ธฐ
noMember = pd.DataFrame(rows)
noMember
1. ํด๋์ค ์์ฑ
- ํด๋์ค ์ด๋ฆ : PowerClass
2. ํด๋์ค ๋ด์ ํจ์๋ค ์ ์
3. ์ธ๋ถ์์ ์กฐํ/ํ๊ฑด์
๋ ฅ/์์ /์ญ์ ์ฒ๋ฆฌํ๊ธฐ
import pandas as pd
import pymysql
class PowerClass:
def __init__(self, host, port, user, password, db, charset='utf8', autocommit=True, cursorclass=pymysql.cursors.DictCursor):
self.host = host
self.port = port
self.user = user
self.password = password
self.db = db
self.charset = charset
self.autocommit = autocommit
self.cursorclass = cursorclass
self.connection = None
def connect_db(self):
try:
self.connection = pymysql.connect(
host=self.host,
port=self.port,
user=self.user,
password=self.password,
db=self.db,
charset=self.charset,
autocommit=self.autocommit,
cursorclass=self.cursorclass
)
print("DB ์ฐ๊ฒฐ ์ฑ๊ณต")
except Exception as e:
print(f"DB ์ฐ๊ฒฐ ์๋ฌ: {e}")
def close_db(self):
if self.connection:
self.connection.close()
print("DB ์ฐ๊ฒฐ ์ข
๋ฃ")
def select_data(self, sql):
try:
with self.connection.cursor() as cursor:
indata = cursor.execute(sql)
result = cursor.fetchall()
df_result = pd.DataFrame(result)
print(f"{indata} ๊ฑด์ ๋ฐ์ดํฐ๊ฐ ์กฐํ๋์์ต๋๋ค.")
print(result)
print(df_result)
except Exception as e:
print(f"๋ฐ์ดํฐ ์กฐํ ์๋ฌ: {e}")
def insert_data(self, sql):
try:
with self.connection.cursor() as cursor:
indata = cursor.execute(sql)
if(indata>0): print(f"{indata} ๊ฑด์ ๋ฐ์ดํฐ ์
๋ ฅ ์ฑ๊ณต")
else: print("๋ฐ์ดํฐ ์
๋ ฅ ์คํจ")
except Exception as e:
print(f"๋ฐ์ดํฐ ์
๋ ฅ ์๋ฌ: {e}")
def update_data(self, sql):
try:
with self.connection.cursor() as cursor:
indata = cursor.execute(sql)
if(indata>0): print(f"{indata} ๊ฑด์ ๋ฐ์ดํฐ ์์ ์ฑ๊ณต")
else: print("๋ฐ์ดํฐ ์์ ์คํจ")
except Exception as e:
print(f"๋ฐ์ดํฐ ์์ ์๋ฌ: {e}")
def delete_data(self, sql):
try:
with self.connection.cursor() as cursor:
indata = cursor.execute(sql)
if(indata>0): print(f"{indata} ๊ฑด์ ๋ฐ์ดํฐ ์ญ์ ์ฑ๊ณต")
else: print("๋ฐ์ดํฐ ์ญ์ ์คํจ")
except Exception as e:
print(f"๋ฐ์ดํฐ ์ญ์ ์๋ฌ: {e}")
PowerClass ์ธ์คํด์ค ์์ฑ
# PowerClass ์ธ์คํด์ค ์์ฑ
host = "localhost"
port = 3306
user = "gjuser"
password = "dbdb"
db = "gjdb"
power_instance = PowerClass(host, port, user, password, db)
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
# ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
power_instance.connect_db()
๋ฐ์ดํฐ ์กฐํ
# ๋ฐ์ดํฐ ์กฐํ
select_query = '''
SELECT time
FROM time_power_demand
WHERE power >= 90000
'''
power_instance.select_data(select_query)
# df_result = pd.DataFrame(result)
# print("์กฐํ ๊ฒฐ๊ณผ:", result)
# df_result
๋ฐ์ดํฐ ์ ๋ ฅ
# ๋ฐ์ดํฐ ์
๋ ฅ
insert_query = '''
INSERT INTO time_power_demand VALUES ('2020-01-05', '3์', 65210)
'''
power_instance.insert_data(insert_query)
๋ฐ์ดํฐ ์์
# ๋ฐ์ดํฐ ์์
update_query = '''
UPDATE time_power_demand SET ymd = '2020-01-20'
WHERE ymd = '2020-01-05' AND power = 65210
'''
power_instance.update_data(update_query)
๋ฐ์ดํฐ ์ญ์
# ๋ฐ์ดํฐ ์ญ์
delete_query = '''
DELETE FROM time_power_demand
WHERE ymd = '2020-01-20'
'''
power_instance.delete_data(delete_query)
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ข ๋ฃ
# ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ข
๋ฃ
power_instance.close_db()