안녕하세요! 김코딩입니다.
중급자를 위한 파이썬 활용 시리즈의 다섯 번째 시간에 오신 걸 환영합니다. 데이터베이스를 배우기전 지난 글에서는 Flask를 활용해 간단한 웹사이트를 제작하고 자기소개 페이지를 실습해봤죠? 오늘은 파이썬과 SQLite를 이용해 데이터를 저장하고 관리하는 방법을 배워볼 거예요. SQLite는 가볍고 설정이 간단해 초보자도 쉽게 시작할 수 있는 데이터베이스입니다. 이번 글에서는 간단한 학생 성적 관리 시스템을 만들어보며 데이터베이스 활용 팁도 함께 알려드릴게요.
파이썬 데이터베이스란 무엇인가요?
파이썬 데이터베이스는 데이터를 영구적으로 저장하고 관리하는 시스템을 의미합니다. 예를 들어, 학생 성적이나 블로그 글을 단순히 파일에 저장하면 데이터 손실 위험이 있지만, 데이터베이스를 활용하면 더 안전하고 효율적으로 관리할 수 있습니다.
데이터베이스를 사용하면 데이터를 추가, 수정, 삭제, 조회하는 작업을 손쉽게 수행할 수 있으며, 체계적으로 정리된 데이터 덕분에 빠른 검색과 효율적인 관리가 가능합니다.
데이터베이스의 장점
- 효율적인 데이터 관리: 데이터가 체계적으로 정리되어 있어 검색이 빠르고 관리가 편리합니다.
- 데이터 영구 저장: 프로그램을 종료해도 데이터가 유지되므로 장기적인 데이터 관리가 가능합니다.
- 여러 응용 분야에 활용 가능: 학생 성적 관리 시스템뿐만 아니라 블로그, 쇼핑몰, 가계부 등 다양한 프로젝트에서 활용할 수 있습니다.
오늘은 SQLite를 사용해 실습해볼 텐데요. SQLite는 파이썬에 기본 내장되어 있어 별도의 설치 없이 바로 사용할 수 있습니다.
SQLite란 무엇인가요?
SQLite는 가벼운 파일 기반 데이터베이스로, 서버 설정 없이 단일 파일로 데이터를 저장할 수 있습니다. 따라서 초보자가 배우기에 적합하며, 소형 프로젝트나 테스트 환경에서도 유용하게 사용됩니다. 또한 빠른 속도와 적은 리소스 사용이 장점입니다.
그럼 지금부터 SQLite를 사용해 데이터를 저장하고 관리하는 방법을 살펴보겠습니다!
SQLite 데이터베이스 설정: 첫 테이블 만들기
SQLite를 사용하려면 파이썬의 sqlite3
모듈을 활용하면 됩니다. 이 모듈은 파이썬에 기본 포함되어 있어 별도의 설치 과정 없이 바로 사용할 수 있습니다.
데이터베이스 및 테이블 생성하기
먼저 SQLite 데이터베이스 파일을 만들고, 학생 정보를 저장할 테이블을 생성해보겠습니다.
import sqlite3
# 데이터베이스 연결
conn = sqlite3.connect("school.db")
cursor = conn.cursor()
# 학생 정보 테이블 생성
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
grade INTEGER
)
''')
conn.commit()
conn.close()
print("학생 테이블이 생성되었습니다!")
실행 결과:
학생 테이블이 생성되었습니다!
위 코드는 school.db
라는 데이터베이스 파일을 생성하고, students
테이블을 만들어요. 테이블에는 id
, name
, grade
컬럼이 포함됩니다.
connect()
로 데이터베이스에 연결 →cursor()
로 SQL 실행 준비 →execute()
로 테이블 생성 →commit()
으로 변경 사항 저장 →close()
로 연결 종료
이제 같은 폴더에 school.db
파일이 생성되며, 여기에 데이터가 저장됩니다.
학생 성적 관리 시스템 만들기
이제 SQLite를 이용해 학생 정보를 추가하고, 조회하고, 수정하는 기능을 구현해보겠습니다.
학생 정보 추가하기
import sqlite3
conn = sqlite3.connect("school.db")
cursor = conn.cursor()
name = "김코딩"
grade = 3
cursor.execute("INSERT INTO students (name, grade) VALUES (?, ?)", (name, grade))
conn.commit()
conn.close()
print(f"{name} 학생이 추가되었습니다!")
실행 결과:
김코딩 학생이 추가되었습니다!
INSERT INTO
명령을 사용해 학생 정보를 추가했습니다. ?
플레이스홀더를 활용하면 SQL 인젝션을 방지할 수 있어 보안성이 높아집니다.
학생 정보 조회하기
import sqlite3
conn = sqlite3.connect("school.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM students")
students = cursor.fetchall()
for student in students:
print(f"ID: {student[0]}, 이름: {student[1]}, 학년: {student[2]}")
conn.close()
실행 결과:
ID: 1, 이름: 김코딩, 학년: 3
SELECT * FROM students
를 사용해 모든 학생 정보를 가져오고, fetchall()
로 리스트 형태로 저장했습니다.

학생 정보 수정하기
import sqlite3
conn = sqlite3.connect("school.db")
cursor = conn.cursor()
new_grade = 4
student_id = 1
cursor.execute("UPDATE students SET grade = ? WHERE id = ?", (new_grade, student_id))
conn.commit()
conn.close()
print(f"ID {student_id} 학생의 학년이 {new_grade}로 수정되었습니다!")
실행 결과:
ID 1 학생의 학년이 4로 수정되었습니다!

UPDATE
명령을 사용해 특정 학생의 학년을 수정했습니다. WHERE
조건을 지정해 원하는 데이터만 변경할 수 있습니다.
SQLite 활용 팁과 주의사항
✔ 데이터베이스 연결 관리: close()
를 호출해 연결을 닫아야 리소스 낭비를 방지할 수 있습니다. ✔ 에러 처리 추가: try-except
구문을 사용해 예외 상황을 대비하세요. ✔ 정기적인 데이터 백업: school.db
파일을 복사해 두는 것이 좋습니다.
추천 리소스
리소스 이름 | 설명 | 링크 |
---|---|---|
파이썬 공식 문서 | SQLite 공식 문서 | Python SQLite3 Docs |
SQLite 공식 사이트 | SQLite 튜토리얼 및 문서 | SQLite Docs |
다음 단계
SQLite를 익히면 블로그 시스템, 가계부 앱 등 다양한 프로젝트를 만들 수 있습니다. 다음 단계로 MySQL, PostgreSQL 같은 서버 기반 데이터베이스를 배워보거나, Flask와 데이터베이스를 연동해 웹 애플리케이션을 개발해보는 것도 추천합니다!
다음 글에서도 유용한 정보를 준비할 테니 계속 함께해요! 궁금한 점은 댓글로 남겨주세요. 😊