##初めに
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()
あとは実行して無事に終われば完了です。