DjangoでPostgresSQLに接続する
必要なパッケージがなければ入れる
コマンドプロントで今回の作業に必要なパッケージを入れる
DBのPASSとか直打ちで隠さなくていいなら
python-dotenvは不要
使用する仮想環境に入って
pip install python-dotenv
pip install psycopg2
pip install psycopg2-binary --user
--userを入れてるのはなぜかエラーが出てしまうため
真ん中の-binayないやつはなくてもいいと書いてあるところがあるのでなくても動くと思う
DBのPASSとか直打ちでいいならDATABASESの値を変更するまでジャンプ
DBのパスワードを隠すため.envをつくる
自分の場合はワークスペースのプロジェクトフォルダの直下(settingpyとかと同じ階層)に.envという名前のフォルダを作成する
ちゃんとpathを通せるならここに置かなくてもよい
中に
DB_USER=postgres
DB_PASSWORD=XXXXXXXX
のように書く
注意点としては
=つなぎ
改行で次のkey
文字列に " も ' も使わない
.envをロードして環境変数を取り込む
Djangoの読み込むためのsetting.pyを編集する
#環境変数読み込み
dotenv_path=join(dirname(__file__),'.env');
load_dotenv(dotenv_path);
上記を記入すれば環境変数の読み込みが完了する。
おいてある場所がプロジェクトフォルダ直下でないならdot_env_pathを置いた場所に置き換えることが必要
DATABASESの値を変更する
そのままsettings.pyをしたにスクロールしてDATABASESの項目を見つけたら次のように置き換える
#print (os.environ.get('DB_PASSWORD'))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'データベース名',
'USER': os.environ.get('DB_USER'),
'PASSWORD': os.environ.get('DB_PASSWORD'),
'HOST': '',
'PORT': '',
}
}
NAMEはpostgresで作成したデータベース名
USERとパスワードは先ほど設定した.envファイルの値を取得
一応直打ちしても動きはする
os.environ.get(変数名)で変数に対応する値を.envファイルから探して置き換える。
これでpostgresのDATABASEにアクセスするようになる
この記事が気に入ったらサポートをしてみませんか?