데이터베이스는 데이터를 효율적으로 저장하고 관리할 수 있는 중요한 도구입니다. 파이썬(Python)은 다양한 데이터베이스와 연결하고, 데이터를 처리할 수 있는 강력한 기능을 제공합니다. 이번 포스팅에서는 파이썬을 사용하여 데이터베이스에 연결하고, 데이터를 조회, 삽입, 업데이트, 삭제하는 방법에 대해 알아보겠습니다. 특히, SQLite와 MySQL을 중심으로 설명하겠습니다.
1. SQLite 데이터베이스
SQLite는 경량의 관계형 데이터베이스 관리 시스템(RDBMS)으로, 서버가 필요 없고 파일 기반으로 동작합니다. 파이썬은 기본적으로 SQLite를 지원하므로, 별도의 설치 없이 사용할 수 있습니다.
1.1. SQLite 데이터베이스 연결
SQLite 데이터베이스에 연결하려면 sqlite3 모듈을 사용합니다. 데이터베이스 파일이 없으면 자동으로 생성됩니다.
import sqlite3
# 데이터베이스 연결
conn = sqlite3.connect("example.db")
# 커서 객체 생성
cur = conn.cursor()
위 코드에서는 example.db라는 이름의 SQLite 데이터베이스에 연결하고, SQL 문을 실행하기 위해 커서(cursor) 객체를 생성합니다.
1.2. 테이블 생성
데이터베이스에 테이블을 생성하기 위해 CREATE TABLE SQL 문을 실행합니다.
cur.execute('''CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER)''')
# 변경사항 저장
conn.commit()
위 코드에서는 users라는 테이블을 생성하며, id, name, age라는 컬럼을 정의합니다.
1.3. 데이터 삽입
데이터를 삽입하려면 INSERT INTO SQL 문을 사용합니다.
cur.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Alice", 25))
cur.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Bob", 30))
# 변경사항 저장
conn.commit()
위 코드에서는 users 테이블에 두 명의 사용자를 삽입합니다. ?는 SQL 문의 매개변수로, 안전하게 값을 삽입할 수 있도록 도와줍니다.
1.4. 데이터 조회
데이터를 조회하려면 SELECT SQL 문을 사용합니다.
cur.execute("SELECT * FROM users")
rows = cur.fetchall()
for row in rows:
print(row)
위 코드에서는 users 테이블의 모든 데이터를 조회하고, 각 행을 출력합니다.
1.5. 데이터 업데이트
데이터를 업데이트하려면 UPDATE SQL 문을 사용합니다.
cur.execute("UPDATE users SET age = ? WHERE name = ?", (26, "Alice"))
# 변경사항 저장
conn.commit()
위 코드에서는 Alice의 나이를 26으로 업데이트합니다.
1.6. 데이터 삭제
데이터를 삭제하려면 DELETE FROM SQL 문을 사용합니다.
cur.execute("DELETE FROM users WHERE name = ?", ("Bob",))
# 변경사항 저장
conn.commit()
위 코드에서는 Bob의 데이터를 삭제합니다.
1.7. 연결 종료
작업이 끝나면 데이터베이스 연결을 닫아야 합니다.
cur.close()
conn.close()
2. MySQL 데이터베이스
MySQL은 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 파이썬에서 MySQL에 연결하려면 mysql-connector-python 패키지를 사용합니다. 이 패키지는 MySQL 서버와의 통신을 도와줍니다.
2.1. MySQL 커넥터 설치
먼저, MySQL 커넥터를 설치해야 합니다.
pip install mysql-connector-python
2.2. MySQL 데이터베이스 연결
MySQL 데이터베이스에 연결하려면 mysql.connector 모듈을 사용합니다.
import mysql.connector
# 데이터베이스 연결
conn = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="your_database"
)
# 커서 객체 생성
cur = conn.cursor()
위 코드에서는 MySQL 서버에 연결하고, 데이터베이스에 접근하기 위한 커서 객체를 생성합니다.
2.3. 테이블 생성, 데이터 삽입, 조회, 업데이트, 삭제
SQLite와 유사한 방법으로 MySQL에서도 동일한 작업을 수행할 수 있습니다.
테이블 생성
cur.execute('''CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age INT)''')
conn.commit()
데이터 삽입
cur.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ("Alice", 25))
cur.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ("Bob", 30))
conn.commit()
데이터 조회
cur.execute("SELECT * FROM users")
rows = cur.fetchall()
for row in rows:
print(row)
데이터 업데이트
cur.execute("UPDATE users SET age = %s WHERE name = %s", (26, "Alice"))
conn.commit()
데이터 삭제
cur.execute("DELETE FROM users WHERE name = %s", ("Bob",))
conn.commit()
2.4. 연결 종료
작업이 끝나면 MySQL 데이터베이스 연결을 닫아야 합니다.
cur.close()
conn.close()
3. 데이터베이스 예외 처리
데이터베이스 작업 중 오류가 발생할 수 있습니다. 이를 처리하기 위해 try-except-finally 구문을 사용합니다.
예시
import sqlite3
try:
conn = sqlite3.connect("example.db")
cur = conn.cursor()
cur.execute("SELECT * FROM non_existent_table")
rows = cur.fetchall()
except sqlite3.Error as e:
print(f"데이터베이스 오류 발생: {e}")
finally:
if conn:
conn.close()
위 코드에서는 존재하지 않는 테이블을 조회하려고 할 때 발생하는 오류를 처리합니다.
4. 데이터베이스 트랜잭션
트랜잭션(Transaction)은 데이터베이스의 일련의 작업을 하나의 단위로 묶어 처리하는 것입니다. 트랜잭션을 사용하면 데이터의 일관성을 유지할 수 있습니다. 파이썬에서는 commit()과 rollback() 메서드를 사용하여 트랜잭션을 관리할 수 있습니다.
트랜잭션 예시
import sqlite3
try:
conn = sqlite3.connect("example.db")
cur = conn.cursor()
cur.execute("BEGIN") # 트랜잭션 시작
cur.execute("UPDATE users SET age = 27 WHERE name = 'Alice'")
cur.execute("UPDATE users SET age = 32 WHERE name = 'Bob'")
conn.commit() # 트랜잭션 커밋
except sqlite3.Error as e:
conn.rollback() # 오류 발생 시 롤백
print(f"데이터베이스 오류 발생: {e}")
finally:
if conn:
conn.close()
위 코드에서는 두 개의 업데이트 작업을 하나의 트랜잭션으로 묶어 처리하고 있습니다. 중간에 오류가 발생하면 롤백하여 이전 상태로 되돌립니다.
결론
이번 포스팅에서는 파이썬에서 데이터베이스에 연결하고 데이터를 처리하는 방법을 살펴보았습니다. SQLite와 MySQL을 사용하여 테이블 생성, 데이터 삽입, 조회, 업데이트, 삭제 등의 작업을 수행하는 방법을 배웠습니다. 데이터베이스는 효율적인 데이터 관리의 핵심 도구이며, 파이썬을 통해 다양한 데이터베이스와 상호작용할 수 있습니다. 데이터베이스 연결과 처리에 익숙해지면, 더 복잡한 데이터 기반 애플리케이션을 구축할 수 있습니다.
이 글을 통해 파이썬에서 데이터베이스와 상호작용하는 방법을 이해하고, 실습을 통해 데이터베이스 처리에 익숙해질 수 있을 것입니다. 다양한 데이터베이스를 다뤄보며 데이터 관리의 기본기를 다져보세요!
'PYTHON' 카테고리의 다른 글
파이썬의 정규 표현식 활용법 (0) | 2024.08.15 |
---|---|
파이썬을 이용한 웹 스크래핑 기초 (0) | 2024.08.15 |
파이썬 모듈과 패키지의 이해 (0) | 2024.08.15 |
파이썬 클래스와 객체 지향 프로그래밍 기초 (0) | 2024.08.15 |
파이썬에서의 파일 입출력 방법 (0) | 2024.08.15 |