MariaDB 사용법
1. MariaDB 개요 및 특징
MariaDB는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)으로, MySQL과 매우 높은 호환성을 자랑합니다. 파이썬 환경에서 MariaDB를 다루기 위해서는 공식 커넥터 라이브러리를 설치하여 연동할 수 있습니다.
사전 준비: 커넥터 설치
터미널 또는 명령 프롬프트에서 아래 명령어를 실행하여 MariaDB 파이썬 커넥터를 설치합니다.
pip install mariadb
2. Python과 MariaDB 연동 및 기본 CRUD 실습
파이썬 코드를 통해 MariaDB에 접속하고 데이터를 관리하는 단계별 가이드입니다.
① 데이터베이스 연결하기
mariadb.connect() 함수를 사용하여 호스트, 사용자 계정, 비밀번호, 데이터베이스 정보를 설정하고 연결을 수립합니다.
import mariadb
try:
conn = mariadb.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase"
)
print("MariaDB에 성공적으로 연결되었습니다.")
except mariadb.Error as e:
print(f"MariaDB에 연결하는 중 오류 발생: {e}")
② 테이블 생성하기
cursor.execute()를 통해 SQL문을 실행하여 데이터 저장의 기본 단위가 되는 테이블을 생성합니다.
cursor = conn.cursor()
try:
cursor.execute(
"""CREATE TABLE IF NOT EXISTS employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255)
)"""
)
conn.commit()
print("테이블이 성공적으로 생성되었거나 이미 존재합니다.")
except mariadb.Error as e:
print(f"테이블 생성 오류: {e}")
③ 데이터 추가 (INSERT)
INSERT INTO 문을 사용하여 새로운 레코드를 삽입하고 conn.commit()으로 반영합니다.
try:
cursor.execute(
"INSERT INTO employees (name, address) VALUES (?, ?)",
("John Doe", "123 Blue Street")
)
conn.commit()
print(f"{cursor.rowcount}개의 레코드를 삽입했습니다.")
except mariadb.Error as e:
print(f"데이터 삽입 오류: {e}")
④ 데이터 조회 (SELECT)
저장된 데이터를 조회하고 반복문을 통해 출력합니다.
try:
cursor.execute("SELECT name, address FROM employees")
for name, address in cursor:
print(f"Name: {name}, Address: {address}")
except mariadb.Error as e:
print(f"데이터 조회 오류: {e}")
⑤ 데이터 업데이트 (UPDATE)
조건에 맞는 레코드의 데이터를 수정합니다.
try:
cursor.execute(
"UPDATE employees SET address = ? WHERE name = ?",
("456 Green Avenue", "John Doe")
)
conn.commit()
print(f"{cursor.rowcount}개의 레코드를 업데이트했습니다.")
except mariadb.Error as e:
print(f"데이터 업데이트 오류: {e}")
⑥ 데이터 삭제 (DELETE)
특정 조건에 일치하는 레코드를 테이블에서 제거합니다.
try:
cursor.execute(
"DELETE FROM employees WHERE name = ?",
("John Doe",)
)
conn.commit()
print(f"{cursor.rowcount}개의 레코드를 삭제했습니다.")
except mariadb.Error as e:
print(f"데이터 삭제 오류: {e}")
3. 안정적인 트랜잭션 처리 (Transaction Handling)
여러 개의 SQL 작업을 하나의 논리적 단위로 묶어 처리할 때 트랜잭션을 사용합니다. 오류 발생 시 rollback()을 통해 데이터 무결성을 유지할 수 있습니다.
try:
conn.autocommit = False # 자동 커밋 비활성화
# 다중 작업 수행
cursor.execute("INSERT INTO employees (name, address) VALUES (?, ?)", ("Alice", "789 Red Road"))
cursor.execute("INSERT INTO employees (name, address) VALUES (?, ?)", ("Bob", "101 Yellow Lane"))
conn.commit() # 정상 처리 시 커밋
print("트랜잭션이 성공적으로 커밋되었습니다.")
except mariadb.Error as e:
conn.rollback() # 오류 발생 시 롤백
print(f"트랜잭션 오류: {e}")
finally:
conn.autocommit = True # 자동 커밋 상태 복원
conn.close() # 데이터베이스 연결 종료