187
166

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

python-dotenvを使って環境変数を設定する

Last updated at Posted at 2019-01-17

##初めに

APIのキーやDBのパスワードなどをべた書きするのはあまり良くないと教わり環境変数に入れる方法を考えた際にpython-dotenvを使うことにしました。

公式のgitはこちらです。

##python-dotenvのインストールと.envファイル作成
インストール

$ pip install python-dotenv

また、環境変数を入れるためのファイルを作成します。

$ echo "ENV_KEY=hogehoge" > .env

これで.envファイルに"ENV_KEY=hogehoge" が入りました。
追加したい場合は、vsCodeやAtomなどのエディターでも作成出来ます。

##環境変数を渡したい場所に渡す

まずは環境変数ファイルの中身です(※以下いずれの形式でも問題なし)。

.env
DB_NAME=dsn
USER_NAME="username"
PASSWORD = "password"

「settings.py」は.envファイルから値を読み込みます。join(dirname(__file__), '.env')で、「settings.py」の相対パスを取得し、joinで「.env」ファイルを指定します。dotenv_pathに格納された.envファイルのパスを元に、load_dotenvでファイルの中身を読み取ります。

settings.py
import os
from os.path import join, dirname
from dotenv import load_dotenv

load_dotenv(verbose=True)

dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path)

DSN = os.environ.get("DB_NAME")
USN = os.environ.get("USER_NAME")
PWD = os.environ.get("PASSWORD")

あとは「main.py」にimportして値を渡します。

main.py
import ibm_db
import ibm_db_dbi
import settings

# print(settings.DSN) *このように書くことで値が入っているか確認も出来ます
# print(settings.USN)
# print(settings.PWD)
DSN = settings.DSN
USN = settings.USN
PWD = settings.PWD


# 接続
conn = ibm_db_dbi.connect(DSN, USN, PWD)
cur = conn.cursor()

# SQL
cur.execute("select * from LT_SPSS_FMC")

# 列毎に集計
for row in cur:
    print("%s, %s, %s, %d, %s, %s, %s, %s" % 
          (row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]))

conn.commit()

あとは実行して無事に終われば完了です。

187
166
2

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
187
166

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?