Software Study/SQL

[2021.02.22] SQL공부 - 간단한 고객 관리 프로그램 (파이썬)

욜스터 2021. 2. 22. 23:40
728x90

기본 구조

본 프로그램은 데이터 조회, 입력, 삭제, 변경, 종료 등의 기능으로 구성되어 있다. 

cmd = 'na' 

while cmd != 'q':
    print("")
    print("***사용 가능 명령어 리스트***")
    print("a  : 모든 데이터 조회(all)")
    print("f  : 조건에 맞는 데이터만 조회(find)")
    print("i  : 수강생 입력(insert)")
    print("d  : 수강생 삭제(delete)")
    print("r  : 정보 변경(revise)")
    print("q  : 저장하고 나가기(quit)")
    print("")

    cmd = input("command(명령어 입력): ")

    print("")
	
    if cmd == 'a': <code>
    elif cmd == 'f': <code>
    elif cmd == 'i': <code>
    elif cmd == 'd': <code>
    elif cmd == 'r': <code>
    elif cmd == 'q': <code>
    else:
        print("잘못된 명령어가 입력되었습니다. 다시 입력해 주세요.")

 

+print_result()

출력 시에 미리 제작해놓은 print_result()를 호출하여 사용했다.

def print_result(result):
    print("\n------------------------------------------------------------------------")
    cnames = ['이름', '생년월일', '소속', '전화번호', '거주지']
    for c in cnames:
        print(c.center(11, ' '), end='\t')
    print("\n------------------------------------------------------------------------")
    ccodes = ['name', 'birth', 'team', 'phone', 'address']
    for r in result:
        for index, c in enumerate(ccodes):
            print(str(r[index]).center(11, ' '), end='\t')
        print("")
    print("------------------------------------------------------------------------")

 

 

1. 모든 데이터 조회 (all)

if cmd == 'a':
	sql = "SELECT * FROM student"
    cur.execute(sql)
    result = cur.fetchall()
    print_result(result)

 

2. 조건에 맞는 데이터만 조회(find)

    elif cmd =='f':
        print("무엇을 기준으로 검색하시겠습니까? (이름/나이/소속/전화번호/거주지)")
        con = input("> ")
        
        if con == '이름': <code>
        elif con == '나이': <code>
        elif con == '소속': <code>
        elif con == '전화번호': <code>
        elif con == '거주지': <code>

 

2-1 검색 기준: 이름

        if con == '이름':
            print("/\검색하실 수강생의 이름을 입력해주세요.")
            con2 = input("> ")
            sql = "SELECT * FROM student WHERE name = '{}'".format(con2)
            cur.execute(sql)
            result = cur.fetchall()
            print_result(result)

 

2-2 검색 기준: 나이

        elif con == '나이':
            print("\n ※ 숫자만 입력해주세요. \n")
            input_age1 = int(input("몇 살 이상을 검색하시겠습니까?"))
            input_age2 = int(input("몇 살 이하를 검색하시겠습니까?"))
            
            import datetime, time
            d = datetime.date.today()
            year1 = d.year - input_age2 + 1
            year2 = d.year - input_age1 + 1
            sql = "SELECT * FROM student WHERE LEFT(birth, 4) BETWEEN {} AND {}".format(year1, year2)
            cur.execute(sql)
            result = cur.fetchall()
            print_result(result)

 

2-3 검색 기준: 소속

        elif con == '소속':
			print("\n검색하실 수강 그룹을 입력해 주세요. (A/B/C)")
            con2 = input("> ")
            sql = "SELECT * FROM student WHERE team = '{}'".format(con2)
            cur.execute(sql)
            result = cur.fetchall()
            print_result(result)

 

2-4 검색 기준: 전화번호

        elif con == '전화번호':
            print("\n검색하실 전화번호을 입력해 주세요. (숫자만 입력 해 주세요.)")
            con2 = input("> ")
            sql = "SELECT * FROM student WHERE phone = '{}'".format(con2)
            cur.execute(sql)
            result = cur.fetchall()
            print_result(result)

 

2-5 검색 기준: 거주지

        elif con == '거주지':
            print("\n검색하실 거주지를 입력해 주세요.")
            con2 = input('> ')
            sql = "SELECT * FROM student WHERE address = '{}'".format(con2)
            cur.execute(sql)
            result = cur.fetchall()
            print_result(result)

 

3. 데이터 입력하기(insert)

    elif cmd == 'i':
        name = input("수강생 이름: ")
        birth = input("생년월일(숫자 8자리): ")
        team = input("소속 그룹(A/B/C): ")
        phone = input("전화번호(숫자 11자리): ")
        address = input("거주지: ")
        sql = "INSERT INTO student VALUES('{}',{},'{}','{}','{}')".format(name, birth, team, phone, address)
        cur.execute(sql)
        con.commit()
        print("해당 데이터의 입력이 완료되었습니다.")

데이터를 'input'으로 받아 쿼리문을 완성, 전달했으며 이후 DB 변동 사항을 저장하기 위하여 con.commit() 메소드를 사용했다. 

 

4. 데이터 삭제하기(delete)

    elif cmd == 'd':
        print("※ 수강생 삭제는 전화번호를 통해서만 가능합니다.")
        phone = input("목록에서 삭제할 수강생의 전화번호(숫자 11자리): ")
        sql = "DELETE FROM student WHERE phone = '{}'".format(phone)
        cur.execute(sql)
        con.commit()
        print("해당 데이터의 삭제가 완료되었습니다.")

삭제 시 입력과 데이터 입력과 마찬가지로 'input'으로 받아 쿼리문을 전달했으며, 중복된 값이 들어올 가능성이 없는 전화번호를 KEY로 사용했다. 

 

5. 프로그램 종료

    elif cmd == 'q':
        #con.commit()
        print("프로그램을 종료합니다.")

 

 

728x90
반응형