15주차 수 1129( 테이블_ 저장하기 2) :: newb

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 15주차 수 1129( 테이블_ 저장하기 2)
    광주인력개발원 일일포스팅(메모장) 2023. 11. 29. 16:02
    728x90
    반응형
    조회결과가 여러건인 경우
    
    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 
    """

     

    728x90
    반응형
Designed by Tistory.