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を編集する

画像1

#環境変数読み込み
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にアクセスするようになる


この記事が気に入ったらサポートをしてみませんか?