조회결과가 여러건인 경우
rows = cur.fetchall()
rows
[{'ymd': '2021-01-01', 'time': '1시', 'power': 64942.0},
{'ymd': '2021-01-01', 'time': '2시', 'power': 62593.0},
{'ymd': '2021-01-01', 'time': '3시', 'power': 60905.0},
{'ymd': '2021-01-01', 'time': '4시', 'power': 59889.0},
... }]
리스트 안에 딕셔너리 형태로 나온다
ymd_power_demand = pd.DataFrame(rows)
# - 컬럼명 없이 받아온 경우
# - [(), (), ...]
# ymd_power_df = pd.DataFrame(rows,columns=["ymd", "time", "power"])
ymd_power_demand
ymd time power
0 2021-01-01 1시 64942.0
1 2021-01-01 2시 62593.0
2 2021-01-01 3시 60905.0
3 2021-01-01 4시 59889.0
4 2021-01-01 5시 59638.0
... ... ... ...
8755 2021-12-31 20시 72976.0
8756 2021-12-31 21시 71602.0
8757 2021-12-31 22시 69383.0
8758 2021-12-31 23시 68874.0
8759 2021-12-31 24시 70123.0
### 한건 조회를 위한 sql 구문 생성하기
sql = """
SELECT *
FROM time_power_demand
WHERE ymd = '2021-01-01'
AND TIME = '1시'
"""
sql
"""
안에 왼쪽 오른쪽 띄어쓰기 잘 해야 오류가 안남
"""
### SQL 구문을 DB에 요청하고, 결과 가져오기
cur.execute(sql)
1
### 1건 데이터 추출하기
row = cur.fetchone()
row
{'ymd': '2021-01-01', 'time': '1시', 'power': 64942.0}
딕셔너리 형태로 나온다.
ymd_power_one = pd.DataFrame([row])
ymd_power_one
ymd time power
0 2021-01-01 1시 64942.0
데이터 입력하기(insert)
### 입력을 위한 구문 생성하기
sql = """
Insert Into time_power_demand
(ymd, time, power
) Value (
'2020-12-31', '24시', 1234
)
"""
sql
### 저장 요청 시에는 결과값이 숫자값으로 반환됩니다.
rs_cnt = cur.execute(sql)
rs_cnt
print(f"{rs_cnt}건이 처리되었습니다.")
1건이 처리되었습니다.
수정하기 처리하기
### ymd가 2020-12-31이고, 시간이 24시인 행을 찾아서
# power의 값을 5678로 수정하기
sql = """
UPDATE time_power_demand
SET POWER = 6789
WHERE ymd = '2020-12-31'
AND TIME = '24시'
"""
sql
### DB에 SQL 구문 요청하고 결과 받아오기
rs_cnt = cur.execute(sql)
if rs_cnt> 0:
print(f"{rs_cnt}건이 처리되었습니다.")
else :
print("수정되지 읺있습니다.")
1건이 처리되었습니다.
삭제하기
### ymd가 2020-12-31이고, 시간이 24시인 행을 찾아서
# 삭제하기
slq = """
Delete From time_power_demand
WHERE ymd = '2020-12-31'
AND TIME = '24시'
"""
sql
rs_cnt = cur.execute(sql)
if rs_cnt> 0:
print(f"{rs_cnt}건이 처리되었습니다.")
else :
print("삭제되지 읺있습니다.")
1건이 처리되었습니다.
한번도 구매한적이 없는 회원정보를 조회해주세요
- 조회컬럼 : 회원아이디, 회원이름
sql = """
SELECT mem_id, mem_name
FROM member
WHERE not EXISTS(SELECT *
FROM cart
WHERE cart_member = mem_id)
"""
sql
rs_cnt = cur.execute(sql)
if rs_cnt> 0:
print(f"{rs_cnt}건이 처리되었습니다.")
else :
print("조회되지 읺있습니다.")
9건이 처리되었습니다.
### 커서가 가지고 있는 결과 추출하기
rows = cur.fetchall()
rows
### 데이터프레임에 넣기
noMember = pd.DataFrame(rows)
noMember
"""
<DB 프로그램 순서>
1. 데이터베이스 설정 정보 준비
2. DB 접속하기 : 커넥션(connect)
3. 커서 받아오기 : currsor()
4. 구분 작성하기 : sql(조회, 입력, 수정, 삭제)
5. 구문 실행하기 : execute() -> 결과값은 체크
6. 조회인 경우 커서에서 데이터 추출하기
-> 한건 : fetchone()
-> 여러건 : fetchall()
7. 조회결과 데이터프레임 또는 웹페이지 출력
-> 데이터프레임 : pd.DataFrame(여러건), pd.DataFrame([한건])
8. 조회가 아닌경우 : 처리 결과 조건으로 확인하기 if "처리 성공" else "처리 실패"
9. DB정보 반환하기
-> 반환 순서 : cursor > connect
"""