Back-end/Python - project

[Python] 전화번호부 Project - Update구현

디팔⸜( ◜࿁◝ )⸝︎︎ 2022. 8. 9. 06:47

메뉴 구현 함수

 def update_menu(self):
    print('===주소록 수정하기===')
    print('[1] 조회 후 수정하기')
    print('[0] 돌아가기')
    update_input = int(input('원하시는 기능의 숫자를 입력해 주세요 >>'))
    if update_input == 0 : return self.menu()
    elif update_input == 1 : self.update()
    else: 
        print('잘못된 값입니다. 다시 입력해주세요 >>')

수정 기능을 구현하는 함수

def update(self):
    cursor.execute(f"select * from phoneBookDB order by name")
    search_update_data = cursor.fetchall()
    i = 0
    id_data =[]
    for data in search_update_data:
        print(f"{i+1}, {data[1]}, {data[2]}, {data[3]}")
        id_data += [data]
        i += 1
    select_num = int(input('수정할 전화번호부의 숫자를 입력해주세요 >> *돌아가기는 0번 '))
    if select_num == 0:
        return
    select_id = id_data[select_num-1]
    print(f"{select_id[1]} 님의 전화번호부를 수정합니다.")
    print('[1] 이름 수정')
    print('[2] 전화번호 수정')
    print('[3] 이메일 수정')
    print('[0] 돌아가기')
    select_update_what = int(input('원하시는 기능의 숫자를 입력해 주세요 >>'))
    if select_update_what == 0:
        self.update_menu()
    elif select_update_what == 1:
        update_name_what = input('이름을 수정합니다. 수정할 값을 입력해주세요 >>')
        cursor.execute(f'update phoneBookDB set name="{update_name_what}" where id="{select_id[0]}"')
        conn.commit
        print('내용이 수정되었습니다.')
    elif select_update_what == 2:
        update_phone_what = input('전화번호를 수정합니다. 수정할 값을 입력해주세요 >>')
        cursor.execute(f'update phoneBookDB set phone="{update_phone_what}" where id="{select_id[0]}"')
        conn.commit
        print('내용이 수정되었습니다.')
    elif select_update_what == 3:
        update_email_what = input('이메일을 수정합니다. 수정할 값을 입력해주세요 >>')
        cursor.execute(f'update phoneBookDB set email="{update_email_what}" where id="{select_id[0]}"')
        conn.commit
        print('내용이 수정되었습니다.')

 

수정과 삭제에 있어서는 어떤 방식으로 접근하는게 좋을까 생각을 많이 했던 것 같다.

전화번호나 이메일은 고유하므로 여기서 문제가 없지만 "이름"이 같을 경우에는 관련 데이터를 모두 수정할 순 없으니

테이블 생성시 만든 고유한 Primary Key(id)값으로 해당 자료에 접근하고자 했다.

 

빈 리스트를 만들어 수정하고자 하는 이름에 해당하는 자료들을 반복문으로 출력하면서 빈 리스트에 쌓아줬다.

이때 임의로 설정한 i라는 값으로 빈 리스트에 담긴 데이터들에 접근하여 id값을 가져올 수 있었다

 

위 코드에서 i 라는 값은

사용자들에게 선택할 수 있는 선택지를 제공하고, 함수에는 고유한 Id값을 가져올 수 있는 매개체로 사용됐다.


여담이지만 역시나 변수 이름 짓기가 참 어렵다.....

수정, 삭제 구현에서는 변수 이름이 중구 난방이다...

아직 갈 길이 멀지만 그래도 처음 시작했을 때 보단 조금 더 기반이 잡히는 것 같다.