LoginSignup
0
1

More than 1 year has passed since last update.

【Python】DjangoでOracleに接続する際にサービス名を指定したい

Posted at

概要

DjangoでDBの設定をする際、Django – settings.py – DATABASESの記事にあるように、settings.pyにDBの接続情報を設定します。
今回はOracle Databaseに接続する際の設定内容についてメモ書きします。

ハマったこと

Oracle Databaseのバージョンについて19cを使用したので、DjangoからはPDBにアクセスしたいです。PDBについて、徹底解説!Oracle Database 12cのすべて Vol.2の記事にある通り、DB作成時に合わせてPDBのサービスも作成されるので、このサービス名でアクセスしにいきたいと思います。
とりあえずはこちらのDjangoのドキュメントにある通り、以下のような感じで設定しました。しかしDBにアクセス出来ず。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'SAMPLE_PDB',
        'USER': 'SAMPLE_USER',
        'PASSWORD': 'SAMPLE_PASSWORD',
        'HOST': 'localhost',
        'PORT': '1521',
    }
}

原因

こちらのstackoverflowの記事にある通り、NAME中にHOSTとPORTの指定が無いと、SIDによる接続になるそう。ドキュメントにも、This format is required when using RAC or pluggable databases without tnsnames.oraとありましたので、NAMEにHOSTとPORTを指定すればいけそうです。

対応後の設定

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'localhost:1521/SAMPLE_PDB',
        'USER': 'SAMPLE_USER',
        'PASSWORD': 'SAMPLE_PASSWORD'
    }
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1