본문 바로가기
Python/Python 개발

Windows 환경 Django Oracle 연동하는 방법

by 🌻♚ 2021. 10. 3.

Windows 환경 Django Oracle 연동

Django를 이용해서 개발할 때... 은근히 한번도 해보지 않으면 시간을 꽤 소요하는 부분이 Oracle 연동이다. 실제 배포환경이나 테스트환경이 리눅스로되어 있어 Django DB 연동과 관련된 글은 대부분이 Linux기반이다. 그런데 막상 개발할 때 사용하는 PC나 Django를 배우는 입장에서는 Windows 환경에서 Django를 다루는 경우가 많다. 이번 글에서는 Windows 환경에서 Django에 Oracle을 연동하는 방법에 대해서 배울 것이다.

 

개발 환경

Django Oracle 연동 관련해서 버전에 대한 의존성이 존재하여 매우 중요하다. 해당 실습에서는 아래 버전으로 연동 성공되었다.

  • Python 3.9.6
  • Oracle12c
  • Oracle Client 19.12.0.0.0 Basic Light Package
  • Django 3.2.7
  • cx-Oracle 8.2.1

 

Oracle Settings

> pip install cx_Oracle

django에서 Oracle 연동하기 위해 필요한 모듈이다. "cx_Oracle" 모듈을 받아준다.

 

 

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'SID',
        'USER': '유저ID',
        'PASSWORD': '비밀번호',
        'HOST': '호스트',
        'PORT': '1521',
    }
}

django settings.py의 DATABASE 설정을 Oracle DB 정보에 맞게 수정해준다.

 

 

DPI-1047 Cannot locate a 64-bit Oracle Client library 오류

이 상태로 django server를 실행시켜주면 아래와 같은 오류가 발생한다.

django.db.utils.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified module could not be found". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help

해당 오류는 Oracle Client의 경로를 찾지 못해서 발생하는 오류 입니다.

 

 

아래 링크를 통해 설치 가능합니다.

https://www.oracle.com/kr/database/technologies/instant-client/winx64-64-downloads.html

Django Oracle 연동

해당 실습에서는 Oracle Client 19.12.0.0.0 Basic Light Package를 이용했습니다. 패키지를 설치하고 압축을 풀어서 적당한 위치에 이동시켜 줍니다.

 

 

Django에서 DB Client를 인식시킬 수 있는 방법은 2가지가 있습니다.

  • 환경변수에 DB Client의 위치를 등록한다.
  • 코드상에서 직접 DB Client의 위치를 설정한다.

 

Django를 실행했을 때 시스템에서 해당 경로를 자동으로 인식할 수 있게끔 Windows 환경에서는 Path에 등록해주면 됩니다.

 

 

내 컴퓨터 우클릭 > 고급 시스템 설정 > 환경 변수 > 시스템 환경 변수 편집 

환경변수를 설정해주고 사용하던 터미널이나 IDE에서 그래도 똑같이

django.db.utils.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified module could not be found". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help

오류가 발생하는 경우가 있습니다.

 

사용하던 터미널이나 IDE를 재시작해주고 서비를 실행하면 정상적으로 실행될 것 입니다.

 

주의사항

Migration 적용

클라이언트까지 설치가 되어 있어 연결이 되면 runserver 명령을 통행 django server를 실행했을 때 아무런 오류 없이 잘 성공한다. 하지만... 적어도 DB migrating 작업까지하고 데이터가 나오는지 까지는 확인해줘야한다. 연결은 되지만 실제로 데이터를 갖고 오지 못하는 버전 의존성 문제가 존재한다.

 

 

버전 의존성

Django와 Oracle을 연동할 때 버전에 대한 의존성이 존재한다.

 

https://docs.djangoproject.com/en/2.0/releases/2.0/#dropped-support-for-oracle-11-2

 

Django 2.0 release notes | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

cx_Oracle 8.2 모듈로는 Oracle 11.2도 지원하지만... Django 2.0부터는 Oracle 12.1 이상을 사용한다고 공시되어 있다. 즉, Oracle11g를 사용하기 위해 Django 1점대 버전을 사용해야한다.

 

하지만... Django 2.0에서 Oracle11g를 사용할 수 있는 편법은 존재한다.

아래 링크를 통해 확인 가능하다.

[Python/Python 개발] - Django Oracle11g 연동하는 방법

 

태그

,

댓글0