概要
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'
}
}