00 개요
- 회사에서 이런 저런 DBMS를 다루다보니 여러가지 오픈소스 RDBMS를 파이썬으로 다루게 되었는데 이에 대해 기본적인 연결 방법 및 쿼리 처리 방법에 대해 정리하고자 함
- 다양한 DBMS에서 Python으로 connection과 cursor를 생성하고 닫는 방법에 대한 정리
- MySQL, PostgreSQL, SQLite, Oracle(유료), Microsoft SQL Server, Vertica (유료)
- 주요 DBMS마다 사용하는 Python 라이브러리가 다르므로, 각 DBMS별로 필요한 방법을 구체적으로 설명
01 MySQL (MySQL Connector/Python)
1. 설치
pip install --upgrade mysql-connector-python
2. 코드 예시
import mysql.connector
# Connection 생성
connection = mysql.connector.connect(
host="localhost",
user="username",
password="mypassword",
database="mydb"
)
# Cursor 생성
cursor = connection.cursor()
# 쿼리 실행
cursor.execute("SELECT * FROM mytable")
# 결과 처리
result = cursor.fetchall()
# Cursor 및 Connection 닫기
cursor.close()
connection.close()
02 PostgreSQL (psycopg2)
1. 설치
pip install --upgrade psycopg2
2. 코드 예시
import psycopg2
# Connection 생성
connection = psycopg2.connect(
host="localhost",
user="username",
password="mypassword",
database="mydb"
)
# Cursor 생성
cursor = connection.cursor()
# 쿼리 실행
cursor.execute("SELECT * FROM mytable")
# 결과 처리
results = cursor.fetchall()
# Cursor 및 Connection 닫기
cursor.close()
connection.close()
03 SQLite (sqlite3 - 표준 라이브러리)
1. 설치
- SQLite는 python 표준 라이브러리에 포함되어 있어 별도의 설치 불필요
2. 코드 예시
import sqlite3
# Connection 생성
connection = sqlite3.connect("your_database.db")
# Cursor 생성
cursor = connection.cursor()
# 쿼리 실행
cursor.execute("SELECT * FROM mytable")
# 결과 처리
results = cursor.fetchall()
# Cursor 및 Connection 닫기
cursor.close()
connection.close()
04 Oracle (cx_Oracle)
1. 설치
pip install --upgrade cx_Oracle
2. 코드 예시
import cx_Oracle
# Connection 생성
connection = cx_Oracle.connect(
user="your_username",
password="your_password",
dsn="localhost/your_service_name"
)
# Cursor 생성
cursor = connection.cursor()
# 쿼리 실행
cursor.execute("SELECT * FROM mytable")
# 결과 처리
results = cursor.fetchall()
# Cursor 및 Connection 닫기
cursor.close()
connection.close()
05 Microsoft SQL Server (pyodbc)
1. 설치
pip --upgrade install pyodbc
2. 코드 예시
import pyodbc
# Connection 생성
connection = pyodbc.connect(
"DRIVER={ODBC Driver 17 for SQL Server};"
"SERVER=localhost;"
"DATABASE=your_database;"
"UID=your_username;"
"PWD=your_password"
)
# Cursor 생성
cursor = connection.cursor()
# 쿼리 실행
cursor.execute("SELECT * FROM mytable")
# 결과 처리
results = cursor.fetchall()
# Cursor 및 Connection 닫기
cursor.close()
connection.close()
06 Vertica (vertica-python)
1. 설치
pip install --upgrade vertica-python
2. 코드 예시
import vertica_python
# Connection 생성
connection = vertica_python.connect(
host="localhost",
user="your_username",
password="your_password",
database="your_database"
)
# Cursor 생성
cursor = connection.cursor()
# 쿼리 실행
cursor.execute("SELECT * FROM your_table")
# 결과 처리
results = cursor.fetchall()
# Cursor 및 Connection 닫기
cursor.close()
connection.close()
07 요약
- 각 DBMS에 따라 연결(connection)을 생성한 후, 쿼리를 실행하기 위해 cursor를 생성
- 작업이 끝나면 반드시 cursor.close()와 connection.close()를 호출하여 리소스를 정리하는 것이 중요
- 명시적으로 close()를 호출함으로써 리소스 누수를 방지하는 것!