2025. 1. 31. 16:41ㆍIT
데이터 수정하기
데이터베이스 안에 있는 데이터 수정에 대한 방법을 소개합니다. 데이터베이스의 데이터를 수정할 때 사용하는 SQL은 UPDATE문 입니다. UPDATE 구문의 구성은 다음과 같습니다.
UPDATE 테이블명 SET 필드명1 = 값, 필드명2 = 값 WHERE 조건;
이제는 어느 정도 SQL 구문에 조금은 익숙해졌을 것으로 생각하고 실제 테이블에 있는 값을 수정해 보겠습니다. CustomerCode 테이블에는 id와 name이 입력이 되어 있습니다. 그런데 ‘김삼순’씨 이름이 ‘삼순이’로 잘못 들어가 있음을 확인하고 변경하려고 합니다. 변경을 한 후에는 제대로 입력이 되었는지 출력까지 해 보려고 합니다.
031_dbUpdate.py
id = 1
name = '김삼순'
cur.execute("UPDATE CustomerCode SET name = ? WHERE id = ?;", (name, id))
con.commit()
UPDATE문의 WHERE절에 id가 ?와 같다고 입력이 되었고 첫 줄에서 id라는 변수에 1을 지정함으로써 id가 1인 조건이 완성이 됩니다. id가 1일때 변경될 필드는 name 이고 그 값은 name이라는 변수에 지정된 ‘김삼순’입니다.
데이터베이스에서는 주로 Key 값을 기준으로 WHERE절에서 조건을 명시합니다. Key값은 주민번호와 같이 주로 숫자로 되거나 문자가 포함이 될 경우 길이가 정해지게 됩니다. 왜 다른 필드를 많이 사용하지 않고 Key 값을 주로 사용하느냐 하면 문자열에는 공백이 들어갈 수 있는 등의 오류 가능성이 있어서 입니다. 우리가 주민번호를 사용할 때, 숫자의 길이가 정해져 있지만 이름의 경우에는 성과 이름을 띄어쓰는 경우도 있을 수 있고, 입력하는 사람에 따라서 이름 사이에 공백을 둘 수도 있는 등의 가능성이 있기 때문입니다. 그래서 주민번호 또는 전화번호와 같은 주요 입력값들 중에서 길이가 정해지거나 특정 패턴이 있는 값들을 Key 값이라고 합니다. 앞선 예제들에서 Key 값은 id입니다.
cur.execute("SELECT * FROM CustomerCode WHERE id = ?;", (id, ))
한가지 execute() 함수의 두번째 매개 변수를 보면 id 다음에 콤마가 들어가 있습니다. 만일 여기에 콤마가 없이 id라는 변수 하나만 있을 경우에는 에러가 발생합니다. 최소 두 개 이상의 파라메터가 들어가야 하는 것으로 보입니다. 따라서 하나의 매개변수만 있을 경우에는 콤마를 넣어줘야 합니다.
그러면 Key값은 아니지만 조건문에 name이 ‘김삼순’인 이름을 ‘삼순이’로 다시 변경하고자 할 때는 어떻게 코드를 바꿀 수 있을까요? 고민해 보시고 다음의 코드와 비교해 보시기 바랍니다.
newName = '삼순이'
name = '김삼순'
cur.execute("UPDATE CustomerCode SET name = ? WHERE name = ?;",
(newName, name))
con.commit()
id = 1
cur.execute("SELECT * FROM CustomerCode WHERE id = ?;", (id, ))
results = cur.fetchall()
for result in results:
print(result)
데이터 삭제하기
데이터베이스를 다루는데 있어 마지막인 데이터 삭제입니다. 데이터를 삭제하는데 사용하는 SQL문은 DELETE문 입니다. 지금까지 여러가지 SQL문을 봐 왔기 때문에 낯설지는 않아 보입니다. 형식은 다음과 같습니다.
DELETE FROM 테이블명 WHERE 조건문
name이 ‘삼순이’인 데이터를 지우는 코드를 만들고 다음에는 이름이 ‘삼순이’인 데이터가 얼마나 있는지를 출력해 보는 코드를 살펴보도록 하겠습니다.
033_dbDelete.py
DELETE문은 앞서 설명드린 형식과 실제로 코드를 보면 충분히 이해를 할 수 있을 것이라 생각합니다. 다른 SQL 문장들과 다른점이 없기 때문입니다.
cur.execute("SELECT count(*) FROM CustomerCode WHERE name = ?;", (name, ))
그런데 SELECT문 안에는 우리가 지금까지 보지 못했던 count가 있습니다. 괄호가 있으니 함수 같아 보이기도 합니다. 맞습니다. 몇 개의 레코드가 있는지를 반환해주는 함수입니다. SELECT문 다음에 오는 *는 모든 필드를 얘기한다고 했습니다. 따라서 name이 ‘삼순이’ 레코드의 개수를 출력합니다. 이미 앞에서 지웠기 때문에 출력은 (0, )과 같이 출력이 됩니다.
여기까지가 우리가 기초적으로 알아야 할 sqlite3를 이용한 데이터베이스를 다루는 내용이었습니다. 데이터를 추가하고 검색하고 수정하고 마지막으로 삭제하는 부분까지 배웠습니다. 배운 부분을 활용해서 실제 프로젝트에서 어떻게 사용되는지는 책의 후반부에서 유용한 프로그램을 만들면서 배워볼 예정입니다.
'IT' 카테고리의 다른 글
파이썬 - 파워포인트 파일 준비하기 (0) | 2025.02.02 |
---|---|
파이썬 - 파워포인트와 엑셀을 이용한 편지봉투 출력 - 프로젝트 소개 (0) | 2025.02.02 |
파이썬 - 데이터베이스 - 데이터 검색하기 (0) | 2025.01.31 |
파이썬 - 데이터베이스 - 데이터 추가하기 (0) | 2025.01.31 |
파이썬 - 예외 처리 / 데이터베이스 (0) | 2025.01.31 |