본문 바로가기

라이브러리

[파이썬] sqlite3 사용법

Python에서 SQLite3를 사용하기 위해서는 sqlite3 모듈을 import하여야 합니다. 이 모듈은 Python의 표준 라이브러리에 포함되어 있기 때문에 별도의 설치가 필요하지 않습니다.

 

1. 간단한 사용법


아래는 SQLite3를 사용하여 데이터베이스를 생성하고 테이블을 생성하고, 데이터를 삽입하고 조회하는 예제 코드입니다.

 

import sqlite3

# 데이터베이스 연결
conn = sqlite3.connect('example.db')

# 테이블 생성
conn.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER NOT NULL
    );
''')

# 데이터 삽입
conn.execute('''
    INSERT INTO users (name, age) VALUES (?, ?);
''', ('Alice', 25))

# 데이터 수정
conn.execute('UPDATE users SET age=? WHERE name=?;', (30, 'Alice'))

# 데이터 삭제
conn.execute('DELETE FROM users WHERE name=?;', ('Bob',))

# 데이터 조회
cursor = conn.execute('SELECT * FROM users;')
for row in cursor:
    print(row)

# 연결 종료
conn.close()


위 코드에서 sqlite3.connect() 함수를 사용하여 데이터베이스와 연결합니다. 이 함수의 인자로는 생성하고자 하는 데이터베이스의 파일 경로를 전달합니다. 위 코드에서는 example.db라는 파일을 생성합니다.

conn.execute() 함수를 사용하여 SQL 쿼리를 실행할 수 있습니다. CREATE TABLE 쿼리를 사용하여 users 테이블을 생성하고, INSERT INTO 쿼리를 사용하여 데이터를 삽입합니다. UPDATE 쿼리를 사용하여 name이 'Alice'인 데이터의 age 값을 30으로 수정하고, DELETE 쿼리를 사용하여 name이 'Bob'인 데이터를 삭제합니다. SELECT 쿼리를 사용하여 데이터를 조회할 수 있습니다.

마지막으로 conn.close() 함수를 사용하여 데이터베이스와의 연결을 종료합니다.

위 예제 코드는 SQLite3를 사용한 간단한 예제일 뿐, 실제로 데이터베이스를 사용할 때에는 보안, 성능, 일관성 등 여러 가지 고려사항이 있습니다. 따라서 실제로 사용할 때는 이러한 사항들을 고려하여 코드를 작성하여야 합니다.

 

2. 주의 사항

 

SQLite3를 사용할 때 주의해야 할 사항은 다음과 같습니다.


1) 데이터베이스 파일 경로


SQLite3에서는 데이터베이스를 파일로 저장합니다. 따라서 데이터베이스 파일을 생성할 때 경로와 이름을 정확하게 지정해주어야 합니다. 또한 데이터베이스 파일을 수정할 때에도 같은 파일 경로를 사용하여야 합니다.

2) SQL Injection


SQLite3에서는 SQL Injection 공격을 방지하기 위해 prepared statement를 사용하여 SQL 쿼리를 실행하는 것을 권장합니다. 이를 위해서는 ?를 사용하여 변수를 삽입하거나, sqlite3.escape_string() 함수를 사용하여 문자열에 대해 이스케이프 처리를 해주어야 합니다.

3) 커밋


SQLite3에서는 모든 변경사항을 커밋해주어야 합니다. 커밋을 하지 않으면 변경사항이 데이터베이스 파일에 저장되지 않아, 프로그램을 종료하거나 데이터베이스 파일을 닫은 경우 변경사항이 유실될 수 있습니다. 따라서 데이터를 변경한 후에는 conn.commit() 함수를 호출하여 변경사항을 커밋해주어야 합니다.