# 3-1. 기본 구조
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("잘못된 명령어가 입력되었습니다. 다시 입력해 주세요.")
\Users\Project> python project02.py
***사용 가능 명령어 리스트***
a : 모든 데이터 조회(all)
f : 조건에 맞는 데이터만 조회(find)
i : 수강생 입력(insert)
d : 수강생 삭제(delete)
r : 정보 변경(revise)
q : 저장하고 나가기(quit)
command(명령어 입력):
# 3-2. 모든 수강생 조회(all)
if cmd == 'a':
sql = "SELECT * FROM student"
cursor.execute(sql)
result = cursor.fetchall()
print_result(result)
\Users\Project> python project02.py
***사용 가능 명령어 리스트***
a : 모든 데이터 조회(all)
f : 조건에 맞는 데이터만 조회(find)
i : 수강생 입력(insert)
d : 수강생 삭제(delete)
r : 정보 변경(revise)
q : 저장하고 나가기(quit)
command(명령어 입력): a
-----------------------------------------------
이름 생년월일 소속 전화번호 거주지
-----------------------------------------------
test1 19900301 A 01000000000 서울
test2 19910412 A 01011111111 인천
test3 19920523 B 01022222222 수원
test4 19930604 A 01033333333 대전
test5 19940715 C 01044444444 부산
test6 19950826 C 01055555555 대구
test7 19960907 B 01066666666 서울
test8 19971018 B 01077777777 인천
test9 19981129 A 01088888888 대전
-----------------------------------------------
테이블의 모든 데이터를 출력하는 쿼리문을 전달한 뒤 결과를 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 c in ccodes:
print(str(r[c]).center(11, ' '), end='\t')
print("")
print("------------------------------------------------------------------------")
# 3-3. 조건에 맞는 데이터만 조회(find)
이름, 생년월일 등 각 칼럼에 따른 데이터를 조회할 수 있게 하기 위하여 'if문'을 이용하였으며, 전체적인 틀은 다음과 같습니다.
elif cmd == 'f':
print("무엇을 기준으로 검색하시겠습니까? (이름/나이/소속/전화번호/거주지)")
con = input("> ")
if con == '이름':
elif con == '나이':
elif con == '소속':
elif con == '전화번호':
elif con == '거주지':
# 3-3-1. 검색 기준: 이름
if con == '이름':
print("\n검색하실 수강생의 이름을 입력해 주세요.")
con2 = input("> ")
sql = "SELECT * FROM student WHERE name = '{}'".format(con2)
cursor.execute(sql)
result = cursor.fetchall()
print_result(result)
검색 대상을 'input'으로 입력받아 쿼리문을 완성되도록 했는데, 아래와 같이 제대로 검색이 되는 것을 확인할 수 있습니다.
\Users\Project> python project02.py
***사용 가능 명령어 리스트***
a : 모든 데이터 조회(all)
f : 조건에 맞는 데이터만 조회(find)
i : 수강생 입력(insert)
d : 수강생 삭제(delete)
r : 정보 변경(revise)
q : 저장하고 나가기(quit)
command(명령어 입력): f
무엇을 기준으로 검색하시겠습니까? (이름/나이/소속/전화번호/거주지)
> 이름
검색하실 수강생의 이름을 입력해 주세요.
> test1
-----------------------------------------------
이름 생년월일 소속 전화번호 거주지
-----------------------------------------------
test1 19900301 A 01000000000 서울
-----------------------------------------------
# 3-3-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)
cursor.execute(sql)
result = cursor.fetchall()
print_result(result)
저장된 데이터의 나이로 부터 생년월일(YYYYMMDD)을 추출하기 위해 오늘 자 년, 월, 일을 알려주는 'datetime'를 이용하였습니다. 추출된 연도 범위 안의 수강생을 출력하기 위해 'where'절에서 'left'를 이용하여 추출한 연도 4자리가 해당 범위에 속하는 학생만 선택될 수 있도록 하였습니다.
\Users\Project> python project02.py
***사용 가능 명령어 리스트***
a : 모든 데이터 조회(all)
f : 조건에 맞는 데이터만 조회(find)
i : 수강생 입력(insert)
d : 수강생 삭제(delete)
r : 정보 변경(revise)
q : 저장하고 나가기(quit)
command(명령어 입력): f
무엇을 기준으로 검색하시겠습니까? (이름/나이/소속/전화번호/거주지)
> 나이
※ 숫자만 입력 해 주세요.
몇 살 이상을 검색하시겠습니까? 20
몇 살 이하을 검색하시겠습니까? 23
-----------------------------------------------
이름 생년월일 소속 전화번호 거주지
-----------------------------------------------
test7 19960907 B 01066666666 서울
test8 19971018 B 01077777777 인천
test9 19981129 A 01088888888 대전
-----------------------------------------------
# 3-3-3. 검색 기준: 소속
elif con == '소속':
print("\n검색하실 수강 그룹을 입력해 주세요. (A/B/C)")
con2 = input("> ")
sql = "SELECT * FROM student WHERE team = '{}'".format(con2)
cursor.execute(sql)
result = cursor.fetchall()
print_result(result)
저장된 데이터의 나이로 부터 생년월일(YYYYMMDD)을 추출하기 위해 오늘 자 년, 월, 일을 알려주는 'datetime'를 이용하였습니다. 추출된 연도 범위 안의 수강생을 출력하기 위해 'where'절에서 'left'를 이용하여 추출한 연도 4자리가 해당 범위에 속하는 학생만 선택될 수 있도록 하였습니다.
\Users\Project> python project02.py
***사용 가능 명령어 리스트***
a : 모든 데이터 조회(all)
f : 조건에 맞는 데이터만 조회(find)
i : 수강생 입력(insert)
d : 수강생 삭제(delete)
r : 정보 변경(revise)
q : 저장하고 나가기(quit)
command(명령어 입력): f
무엇을 기준으로 검색하시겠습니까? (A/B/C)
> B
-----------------------------------------------
이름 생년월일 소속 전화번호 거주지
-----------------------------------------------
test3 19920523 B 01022222222 수원
test7 19960907 B 01066666666 서울
test8 19971018 B 01077777777 인천
-----------------------------------------------
# 3-3-4. 검색 기준: 전화번호
elif con == '전화번호':
print("\n검색하실 전화번호을 입력해 주세요. (숫자만 입력 해 주세요.)")
con2 = input("> ")
sql = "SELECT * FROM student WHERE phone = '{}'".format(con2)
cursor.execute(sql)
result = cursor.fetchall()
print_result(result)
\Users\Project> python project02.py
***사용 가능 명령어 리스트***
a : 모든 데이터 조회(all)
f : 조건에 맞는 데이터만 조회(find)
i : 수강생 입력(insert)
d : 수강생 삭제(delete)
r : 정보 변경(revise)
q : 저장하고 나가기(quit)
command(명령어 입력): f
무엇을 기준으로 검색하시겠습니까? (이름/나이/소속/전화번호/거주지)
> 전화번호
검색하실 전화번호을 입력해 주세요. (숫자만 입력 해 주세요.)
> 01055555555
-----------------------------------------------
이름 생년월일 소속 전화번호 거주지
-----------------------------------------------
test6 19950826 C 01055555555 대구
-----------------------------------------------
# 3-3-5. 검색 기준: 거주지
elif con == '거주지':
print("\n검색하실 거주지를 입력해 주세요.")
con2 = input("> ")
sql = "SELECT * FROM student WHERE address = '{}'".format(con2)
cursor.execute(sql)
result = cursor.fetchall()
print_result(result)
\Users\Project> python project02.py
***사용 가능 명령어 리스트***
a : 모든 데이터 조회(all)
f : 조건에 맞는 데이터만 조회(find)
i : 수강생 입력(insert)
d : 수강생 삭제(delete)
r : 정보 변경(revise)
q : 저장하고 나가기(quit)
command(명령어 입력): f
무엇을 기준으로 검색하시겠습니까? (이름/나이/소속/전화번호/거주지)
> 거주지
검색하실 거주지를 입력해 주세요.
> 서울
-----------------------------------------------
이름 생년월일 소속 전화번호 거주지
-----------------------------------------------
test1 19900301 A 01000000000 서울
test7 19960907 B 01066666666 서울
-----------------------------------------------
'Python project > 02 + SQL' 카테고리의 다른 글
[Python Project 02-1] 'PyMySQL' 설치 및 기본 연동 (0) | 2018.06.06 |
---|---|
[Python Project 02-2] 'PyMySQL'을 이용한 기본 쿼리문 전달 (DB/Table 생성 등) (0) | 2018.06.06 |
[Python Project 02-4] 데이터 입력/삭제 기능 구현(PyMySQL) (0) | 2018.06.06 |
[Python Project 02-5] 데이터 변경 기능 구현(PyMySQL) (0) | 2018.06.06 |
[Python Project 02-6] 프로그램 종료 기능 구현 및 전체 코드 (PyMySQL) (0) | 2018.06.06 |