본문 바로가기
데이터베이스/환경설정 및 개발

Python을 사용하여 DB연결

by 코이킹 2023. 7. 12.
반응형

최근 담당한 업무에서 다양한 DB를 만져야할 필요가 생겨 개발환경 구축을 했고 그 기록을 남긴다.

 

작업환경 및 전제조건

- Windows10 Home의 wsl에서 도커환경을 구축

- DBeaver설치(DB접속확인용)

- https://koiking.tistory.com/121 이 포스트대로 DB설치가 끝나있을 것

- 파이썬의 가상환경이 설치되어있을 것

1. 라이브러리 준비하기

PyCharm의 터미널에서 (가상환경)

pip install cx_Oracle
pip install mysql-connector-python
pip install psycopg2

※ 아래와 같이 라이브러리가 설치되야함 

※ 오라클의 경우 운영체제에 맞는 오라클 클라이언트를 추가로 설치해주어야한다. 

내 경우 32비트 윈도우용 오라클 클라이언트가 필요했다

https://www.oracle.com/database/technologies/instant-client/microsoft-windows-32-downloads.html

 

Instant Client for Windows 32-bit

Base - one of these packages is required Tools - optional packages Development and Runtime - optional packages

www.oracle.com

2. 코드 

※ 전체코드 

https://github.com/leeyoungseung/database-ex/commit/755d76d8b2303c68898b909c6fa16b9cd5e3bcbc

1) Oracle 접속코드

import cx_Oracle

# Oracle의 경우 클라이언트의 경로를 환경변수에 설정하거나, 코드내부에서 직접 경로를 설정해야 했다. 
# 내경우 코드내부에서 직접설정했다. 
cx_Oracle.init_oracle_client(r"C:\Users\leeyoungseung\project_source\database-ex\instantclient_11_2")

# Oracle 데이터베이스에 접속
dsn = cx_Oracle.makedsn(host='localhost', port='1521', sid='xe')
connection = cx_Oracle.connect(user='hr', password='1234', dsn=dsn)

# 커넥션 상태 확인
if connection:
    print("Oracle DB 연결 성공")
else:
    print("Oracle DB 연결 실패")
    exit(100)

# 접속된 데이터베이스에서 쿼리 실행
cursor = connection.cursor()
cursor.execute("SELECT * FROM JOBS WHERE ROWNUM <= 100")
result = cursor.fetchall()

# 쿼리 결과 출력
for row in result:
    print(row)

# 연결 종료
connection.close()
exit(0)

2) MySQL 접속코드

import mysql.connector

# MySQL 데이터베이스에 접속
connection = mysql.connector.connect(
    host='localhost',
    port='3307',
    user='root',
    password='mysql',
    database='world'
)

# 커넥션 상태 확인
if connection.is_connected():
    print("MySQL DB 연결 성공")
else:
    print("MySQL DB 연결 실패")
    exit(100)

# 접속된 데이터베이스에서 쿼리 실행
cursor = connection.cursor()
cursor.execute("SELECT * FROM city LIMIT 100")
result = cursor.fetchall()

# 쿼리 결과 출력
for row in result:
    print(row)

# 연결 종료
cursor.close()
connection.close()


connection.close()
exit(0)

 

3) PostgreSQL 접속코드

import psycopg2

# PostgreSQL 데이터베이스 연결
connection = psycopg2.connect(
    host="localhost",
    port="5433",
    user="admin",
    password="postgres",
    database="postgres"
)

# 커넥션 상태 확인
if connection:
    print("PostgreSQL DB 연결 성공")
else:
    print("PostgreSQL DB 연결 실패")
    exit(100)

# 접속된 데이터베이스에서 쿼리 실행
cursor = connection.cursor()
cursor.execute("SELECT * FROM category LIMIT 100")
result = cursor.fetchall()

# 쿼리 결과 출력
for row in result:
    print(row)

# 연결 종료
cursor.close()
connection.close()

3. 실행결과 

반응형

댓글