보통 기관 DB를 다루게 되면 Oracle을 많이 다루는 경우가 많다.
파이썬에서 Oracle DB에 연결하고, 쿼리를 실행하는 방법은 cx_Oracle
라이브러리를 사용하면 된다.
pip install cx_Oracle
함수를 정의하여 DB 연결을 해주면된다.
입력 값은 유저명, 비밀번호, 호스트명, 포트, 서비스명을 입력해주면된다.
import cx_Oracle
def dbConnection(username, password, host, port, service_name):\
# 오라클 DB 연결
try:
dsn = cx_Oracle.makedsn(host, port, service_name=service_name)
conn = cx_Oracle.connect(username, password, dsn)
return conn
# 오류 발생시 오류 메시지 출력
except Exception as e:
print(e)
return None
conn = dbConnection(USERNAME, PASSWORD, HOST, PORT, SERVICE_NAME)
print("DB Connection Success")
cursor = conn.cursor()
DB 연결 함수를 conn 변수에 할당했다면, cursor() 메소드를 통해 커서 객체를 생성한다.
이 커서 변수를 통해 쿼리를 실행할 수 있다.
ex_query = """
SELECT * FROM A
"""
data = cursor.execute(query)
# 읽어온 데이터를 pd.DataFrame로 저장
df = pd.DataFrame(data.fetchall())
파이썬에서 쿼리를 문자열로 할당할 때는 쿼리 마지막에 ;
를 붙이지 않는다. 만약 붙인다면 오류가 발생한다.
쿼리를 실행하려면 커서 객체에 execute 메소드를 통해 쿼리를 실행할 수 있다.
fetchall()로 불러온 데이터는 튜플의 형태로 저장되기 때문에 확인이 불편하다.
pd.DataFrame()으로 묶어주면 쉽게 데이터프레임으로 변경할 수 있다.
단, 컬럼명은 불러오지 않는다.
파이썬을 통해 프로그램을 만들 때 파이썬 내에서 선언된 특정 변수를 쿼리에 넣어 조회를 하거나 저장을 해야할 때가 발생한다.
이 때에는 쿼리에 :변수명
을 통해 파이썬 변수를 사용할 수 있다.
col_a =1234
ex_query = """
SELECT * FROM A
WHERE col_a = :col_a
"""
data = cursor.execute(query, col_a = col_a)
# 읽어온 데이터를 pd.DataFrame로 저장
df = pd.DataFrame(data.fetchall())
파이썬에 선언한 col_a라는 int 값이 쿼리에 사용된다.
즉, 실행되는 쿼리는 다음과 같다.
SELECT * FROM A
WHERE col_a =1234