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
반응형
'Software Study > SQL' 카테고리의 다른 글
라즈베리파이에 SQL 설치 및 외부 접속 허용 (0) | 2021.03.25 |
---|---|
[2021.02.22] SQL 공부 - Python에서 접속 (0) | 2021.02.22 |
[2021.02.18]SQL 공부 - 제약조건, 업데이트, 삭제 (0) | 2021.02.18 |
[2021.02.17] SQL 공부 (0) | 2021.02.17 |
[2021.02.16] SQL 공부 (0) | 2021.02.16 |