이 튜토리얼에서는 SQLite 데이터베이스를 이용해 파이썬(Python)에서 SQL을 사용하는 방법을 단계별로 배워보겠습니다. 파이썬에는 SQLite와 연결할 수 있는 내장 모듈이 기본으로 포함되어 있으며, 여기서는 sqlite3 모듈을 사용해 파이썬과 SQLite를 연동합니다.
1단계: 데이터베이스 연결하기
파이썬에서 SQLite 데이터베이스에 연결하려면 아래 순서대로 진행하면 됩니다.
- sqlite3 모듈을 임포트합니다.
- sqlite3.connect(db_name) 메서드로 연결 객체를 생성합니다. 이 메서드는 데이터베이스 이름을 인자로 받으며, 해당 이름의 파일이 없으면 새로 생성하고, 이미 존재하면 그 파일을 엽니다.
- conn.cursor() 메서드로 커서(cursor) 객체를 얻습니다. 커서는 파이썬과 SQLite 데이터베이스 사이의 중개자 역할을 하며, 모든 SQL 명령은 이 커서 객체를 통해 실행해야 합니다.
위 세 단계는 SQLite 데이터베이스와 연결을 만드는 핵심 과정입니다. MySQL이나 PostgreSQL 같은 다른 데이터베이스를 다룰 때도 절차가 거의 동일하므로 개념을 잘 익혀두면 큰 도움이 됩니다. 코드가 어떻게 작성되는지 아래 예제를 확인해 보세요.
연결 예제
# sqlite3 모듈 임포트
import sqlite3
# 데이터베이스 연결 생성
conn = sqlite3.connect('tutorialspoint.db') # db는 database의 약자
# 커서 객체 생성
cursor = conn.cursor()
2단계: 테이블 생성과 데이터 삽입
연결이 완료되었다면, 이제 SQL 쿼리를 실행해 실제 데이터를 넣어 보겠습니다. 아래 단계를 따라 해보세요.
- 컬럼 이름과 데이터 타입을 지정한 테이블 생성 SQL 문을 작성합니다.
- cursor.execute() 메서드로 SQL 문을 실행해 데이터베이스에 테이블을 만듭니다.
- 테이블에 행(row)을 추가하는 INSERT SQL 문을 작성하고, 같은 방식으로 실행합니다.
- conn.commit() 메서드로 변경 사항을 파일에 저장(커밋)합니다.
- conn.close() 메서드로 연결을 안전하게 종료합니다.
테이블 생성 및 데이터 삽입 예제
# sqlite3 모듈 임포트
import sqlite3
# 데이터베이스 연결 생성
conn = sqlite3.connect('tutorialspoint.db')
# 커서 객체 생성
cursor = conn.cursor()
# 학생(students) 테이블 생성 SQL
create_table_sql = '''
CREATE TABLE students (
id INTEGER PRIMARY KEY,
first_name VARCHAR(20),
last_name VARCHAR(30),
gender CHAR(1)
);
'''
# 테이블 생성 SQL 실행
cursor.execute(create_table_sql)
# students 테이블에 데이터 삽입
insert_student_one_sql = """INSERT INTO students VALUES (1, 'John', 'Hill', 'M');"""
cursor.execute(insert_student_one_sql)
insert_student_two_sql = """INSERT INTO students VALUES (2, 'Jessy', 'Hill', 'F');"""
cursor.execute(insert_student_two_sql)
insert_student_three_sql = """INSERT INTO students VALUES (3, 'Antony', 'Hill', 'M');"""
cursor.execute(insert_student_three_sql)
# commit() 메서드로 변경 사항 저장
conn.commit()
# 연결 종료
conn.close()
위 코드를 실행했을 때 오류가 발생하지 않았다면 정상적으로 완료된 것입니다. 그렇다면 테이블에 저장된 데이터는 어떻게 확인할 수 있을까요? 이번에는 데이터를 조회하는 코드를 작성해 보겠습니다.
3단계: 데이터 조회하기
- 데이터베이스에 연결합니다.
- 커서 객체를 생성합니다.
- 원하는 데이터를 가져오는 SELECT SQL 쿼리를 작성합니다.
- 쿼리를 실행합니다.
- 커서 객체에 조회된 데이터가 담기며, fetchall() 메서드로 꺼낼 수 있습니다.
- print() 함수로 결과를 출력해 확인합니다.
데이터 조회 예제
# sqlite3 모듈 임포트
import sqlite3
# 데이터베이스 연결 생성
conn = sqlite3.connect('tutorialspoint.db')
# 커서 객체 생성
cursor = conn.cursor()
# 모든 학생 데이터를 가져오는 SQL 쿼리
fetch_students_sql = '''
SELECT * FROM students;
'''
# SQL 쿼리 실행
cursor.execute(fetch_students_sql)
# fetchall() 메서드로 결과를 변수에 저장
students = cursor.fetchall() # 튜플(tuple)들의 리스트
# 데이터 출력
print(students)
실행 결과
위 프로그램을 실행하면 다음과 비슷한 결과가 출력됩니다.
[(1, 'John', 'Hill', 'M'), (2, 'Jessy', 'Hill', 'F'), (3, 'Antony', 'Hill', 'M')]
결과는 각 행이 하나의 튜플로 표현되고, 전체 데이터는 튜플들의 리스트 형태로 반환됩니다. 이 값을 반복문으로 순회하면 원하는 형식으로 가공할 수도 있습니다.
마무리
이제 파이썬으로 데이터베이스 작업을 할 준비가 되었습니다. 직접 다양한 쿼리를 작성하고 실행해 보며 감을 익히는 것이 무엇보다 중요합니다. UPDATE, DELETE 등 다른 SQL 명령도 지금까지 배운 execute() 메서드 방식으로 똑같이 적용할 수 있으니 꼭 연습해 보시기 바랍니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨 주세요.