AI딥러닝/Python

Python DB. sqlite3 설치 실행

Ystory96 2026. 1. 20. 19:16

import sqlite3 as s

# 1. DB 연결 및 설정
conn = s.connect("c:/sundo/AIPython/db/abc.db")
c = conn.cursor()

# 2. 테이블 초기화 (연습용)
c.execute("drop table if exists food")
c.execute("create table food(menu char(20), price int)")

# 3. 기초 데이터 삽입
c.execute("insert into food values('라면', 4000)")
c.execute("insert into food values('떡볶이', 3000)")
c.execute("insert into food values('김밥', 2000)")
c.execute("insert into food values('순대', 5000)")
conn.commit() # 변경사항 저장

# --- 함수 정의 ---

def out():
    print("\n[ 현재 메뉴 목록 ]")
    print("메뉴\t가격")
    print("="*20)
    
    # [중요] 출력할 때마다 DB에서 새로 조회해야 변경된 내용이 보입니다.
    c.execute("select * from food")
    k = c.fetchall()
    for i in k:
        print("{}\t{}".format(i[0], i[1]))
    print("="*20 + "\n")

def insert():
    addmenu = input("추가할 메뉴? ")
    addprice = int(input("추가한 메뉴가격? "))
    c.execute("insert into food values(?, ?)", (addmenu, addprice))
    conn.commit() # 저장 필수

def delete():
    out() # 목록을 먼저 보여줌
    delmenu = input("삭제할 메뉴를 입력하세요: ")
    
    # [중요] 삭제 쿼리: menu가 일치하는 행을 지웁니다.
    c.execute("delete from food where menu = ?", (delmenu,))
    conn.commit() # 저장 필수

def update():
    out() # 목록을 먼저 보여줌
    modmenu = input("가격을 수정할 메뉴 이름? ")
    modprice = int(input("변경할 가격? "))
    
    # [중요] 수정 쿼리: menu가 일치하는 행의 price를 업데이트합니다.
    c.execute("update food set price = ? where menu = ?", (modprice, modmenu))
    conn.commit() # 저장 필수

# --- 메인 실행 ---

# 프로그램 시작 시 현재 상태 한번 출력
out()

while True:
    try:
        nu = int(input("1.입력 2.출력 3.삭제 4.수정 0.종료 : "))
    except ValueError:
        print("숫자를 입력해주세요.")
        continue

    if nu == 2:
        out()
    elif nu == 1:
        insert()
        print("--> 메뉴가 등록되었습니다!")
    elif nu == 3:
        delete()
        print("--> 메뉴가 삭제되었습니다!")
    elif nu == 4:
        update()
        print("--> 가격이 수정되었습니다!")
    elif nu == 0:
        print("프로그램을 종료합니다.")
        break
    else:
        print("잘못된 번호입니다.")

# 연결 종료
c.close()
conn.close()