파이썬 데이터베이스 패키지 종류, 장단점
파이썬에서 데이터베이스를 활용할 수 있도록 해주는 몇몇 패키지가 있습니다. SQLite, MySQL, PostgreSQL이 대표적인데요. 각 패키지의 장, 단점과 함께 파이썬 코딩을 통해 활용하는 방법을 정리해 보겠습니다.
글의 순서
파이썬 코딩을 통해 데이터베이스를 활용하는 절차
파이썬 데이터베이스 (1) SQLite
파이썬 데이터베이스 (2) MySQL
파이썬 데이터베이스 (3) PostgreSQL
파이썬 코딩을 통해 데이터베이스를 활용하는 절차
파이썬 데이터베이스 패키지를 통해 데이터베이스와 상호작용할 수 있습니다. 데이터베이스 활용의 기본적인 절차를 다음과 같이 정리할 수 있습니다.
▶ 데이터베이스 연결: 데이터베이스에 접근하기 위한 연결 설정
▶ 쿼리 실행: 데이터를 추가하거나 조회하는 명령어(쿼리) 실행
▶ 결과 처리: 쿼리의 결과 받은 후 처리
▶ 연결 종료: 작업 후 데이터베이스 연결 종료
아래 각 데이터베이스 패키지별 실제 파이썬 코딩에서 이 절차를 확인하실 수 있습니다. 다만, 코드의 형식에 공통점이 있다는 것만 확인해 주시기 바랍니다. 실제 데이터를 이용하여 데이터베이스를 구축한 후, 그 데이터베이스에서 필요한 데이터를 가져오는 과정에 대한 포스팅은 따로 준비하겠습니다.
파이썬 데이터베이스 (1) SQLite
SQLite는 파일 기반의 데이터베이스로, 별도의 서버 설치 없이 단일 파일로 모든 데이터를 관리할 수 있습니다. 주로 소규모 애플리케이션, 모바일 앱, 임베디드 시스템에서 사용되며, SQL(Structured Query Language) 표준을 거의 완벽하게 준수합니다. 설치가 필요 없고, 설정이 간단하여 학습용 및 테스트용으로 적합합니다. 그러나 대규모 트랜잭션 처리나 동시 다중 사용자가 접근하는 환경에는 적합하지 않습니다.
▶장점
– 가볍고 간편합니다.
– 설정이 필요 없으며, 파일 하나로 데이터베이스를 관리할 수 있습니다.
– 학습용으로 적합합니다.
▶단점
– 대규모 데이터 및 고성능 요구사항에는 적합하지 않습니다.
– 동시 다중 사용에 제한이 있습니다.
아래의 예제 코드에서는 데이터베이스에 연결해서 데이터를 가져오는 과정을 보여주고 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import sqlite3 # 데이터베이스 연결 conn = sqlite3.connect('example.db') # 커서 객체 생성 cursor = conn.cursor() # 테이블 생성 cursor.execute('''CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, grade INTEGER)''') # 데이터 추가 cursor.execute("INSERT INTO students (name, grade) VALUES ('Alice', 85)") # 데이터 조회 cursor.execute("SELECT * FROM students") print(cursor.fetchall()) # 연결 종료 conn.close() |
파이썬 데이터베이스 (2) MySQL
MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템으로, 웹 애플리케이션에서 많이 사용됩니다. 빠르고 신뢰성이 높으며, 대규모 트랜잭션 처리가 가능합니다. 또한 다양한 운영 체제에서 실행될 수 있으며, 다중 사용자 접근을 지원합니다. 그러나 복잡한 쿼리 처리나 트랜잭션 관리가 PostgreSQL보다 다소 약합니다.
▶장점
– 대규모 데이터 처리에 적합합니다.
– 여러 사용자가 동시에 접근할 수 있습니다.
▶단점
– 설치와 설정이 필요합니다.
– 사용법이 SQLite보다 복잡합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import mysql.connector # 데이터베이스 연결 conn = mysql.connector.connect(user='user', password='password', host='127.0.0.1', database='testdb') # 커서 객체 생성 cursor = conn.cursor() # 테이블 생성 cursor.execute('''CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), grade INT)''') # 데이터 추가 cursor.execute("INSERT INTO students (name, grade) VALUES ('Bob', 90)") # 데이터 조회 cursor.execute("SELECT * FROM students") print(cursor.fetchall()) # 연결 종료 conn.close() |
파이썬 데이터베이스 (3) PostgreSQL
PostgreSQL은 고급 기능을 제공하는 오픈 소스 관계형 데이터베이스로, 복잡한 쿼리와 트랜잭션을 효율적으로 처리할 수 있습니다. ACID 특성을 완벽하게 지원하며, 데이터 무결성과 확장성에서 뛰어납니다. JSON 데이터 타입을 지원하여 NoSQL 기능도 겸비하고 있습니다. 설정이 다소 복잡하고 자원이 많이 소모될 수 있지만, 안정성과 기능 면에서 가장 강력한 데이터베이스 중 하나입니다.
▶장점
– 고성능과 안정성을 제공합니다.
– 복잡한 쿼리와 트랜잭션을 지원합니다.
▶단점
– 설치와 설정이 필요합니다.
– 사용법이 복잡합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import psycopg2 # 데이터베이스 연결 conn = psycopg2.connect(database="testdb", user="user", password="password", host="127.0.0.1", port="5432") # 커서 객체 생성 cursor = conn.cursor() # 테이블 생성 cursor.execute('''CREATE TABLE students (id SERIAL PRIMARY KEY, name VARCHAR(255), grade INT)''') # 데이터 추가 cursor.execute("INSERT INTO students (name, grade) VALUES ('Charlie', 95)") # 데이터 조회 cursor.execute("SELECT * FROM students") print(cursor.fetchall()) # 연결 종료 conn.close() |
마치며 …
이번 포스팅에서는 파이썬에서 데이터베이스를 활용할 수 있도록 도와주는 패키지인 SQLite, MySQL, PostgreSQL의 장단점과 이들 패키지를 이용하여 데이터베이스에 접근해서 데이터를 가져오는 방법을 알아보았습니다. 코드를 보신바와 같이 데이터베이스 패키지의 종류가 다르더라도 데이터베이스를 활용할 때의 파이썬 코드 형식에는 공통점이 있습니다.
이 포스팅에서 소개해 드린 파이썬 데이터베이스 패키지의 종류와 장단점을 다시 요약해 보면 다음과 같습니다.
▶SQLite : 가볍고 간편하지만 대규모 데이터에는 부적합
▶MySQL : 대규모 데이터에 적합하지만 설치와 설정이 필요
▶PostgreSQL : 고성능과 안정성을 제공하지만 설치와 설정이 필요
함께 참고하면 좋은 글
▶ 파이썬 데이터베이스 기초, 데이터베이스란?
▶ 데이터베이스의 장점과 엑셀 파일의 단점 한눈에 보기
▶ 데이터베이스 아키텍처 이해하기: 1티어부터 3티어까지
▶ 파이썬 판다스로 텍스트 파일 읽기 : read_table()
▶ 파이썬 판다스 데이터 분석 : pivot, 엑셀 입력, 출력
▶ 파이썬 판다스로 엑셀 파일의 원하는 부분 골라 읽기
참고자료
▶ sqlite3 ? DB-API 2.0 interface for SQLite databases
▶ MySQL Connector/Python Developer Guide
▶