環境設定python
データベース接続情報をソースコードに直接書き込むことは、セキュリティ上推奨されません。接続情報を外部ファイル(INIファイル、YAMLファイル、JSONファイル、または.envファイル)に分離することで、以下のようなメリットがあります。
セキュリティの向上: ソースコードに接続情報を直接書くと、ソースコード管理システム(例:Git)に接続情報が保存されてしまい、不正なアクセスのリスクが高まります。外部ファイルに分離し、それらのファイルをソースコード管理から除外することで、このリスクを低減できます。
設定の柔軟性: 開発環境、テスト環境、本番環境など、異なる環境で異なる設定を容易に適用できます。
保守性の向上: 設定情報を一箇所に集約することで、変更が発生した際の修正作業が簡単になります。
INIファイル、YAMLファイル、JSONファイル、.envファイルの違い
INIファイル: シンプルなキーと値のペアで構成され、セクションを使って情報をグループ化できます。
YAMLファイル: 読みやすく、階層的なデータ構造をサポートしています。設定ファイルでよく使われます。
JSONファイル: データ交換フォーマットとして広く使われ、構文がJavaScriptに似ています。階層的なデータ構造をサポートします。
.envファイル: シンプルな環境変数の設定ファイルで、キーと値のペアで構成されます。多くの開発フレームワークでサポートされています。
INI ファイル
シンプルな構造で、初心者でも使いやすい
コメント記述可能
比較的軽量
複雑な設定には不向き
JSON ファイル
軽量でデータ交換に使いやすい
言語に依存しない
構造化データの表現に適している
コメント記述不可
YAML ファイル
人間が読みやすい構造
複雑な設定でも記述しやすい
コメント記述可能
JSON よりもファイルサイズが大きくなる傾向
.env ファイル
Python などの特定のフレームワークで使用されることが多い
環境変数を設定するためのファイル
バージョン管理システムに含めずに済みます
使い分け
シンプルな設定であれば INI ファイル
データ交換を目的とする場合は JSON ファイル
複雑な設定の場合は YAML ファイル
Python で環境変数を設定する場合は .env ファイル
1. INI ファイル
INI ファイルは、キーと値のペアを記述するシンプルな設定ファイルです。
設定例
[database]
user = root
password = password
host = localhost
port = 3306
database = mydb
読み込み例
Python
import configparser
config = configparser.ConfigParser()
config.read("config.ini")
con = "mysql://{user}:{password}@{host}:{port}/{database}".format(
user=config["database"]["user"],
password=config["database"]["password"],
host=config["database"]["host"],
port=config["database"]["port"],
database=config["database"]["database"],
)
df = pd.read_sql("SELECT * FROM n_chokyo", con=con)
コードは注意してご使用ください。
content_copy
2. YAML ファイル
YAML ファイルは、INI ファイルよりも記述が柔軟な設定ファイルです。
設定例
database:
user: root
password: password
host: localhost
port: 3306
database: mydb
読み込み例
Python
import yaml
with open("config.yaml", "r") as f:
config = yaml.safe_load(f)
con = "mysql://{user}:{password}@{host}:{port}/{database}".format(
user=config["database"]["user"],
password=config["database"]["password"],
host=config["database"]["host"],
port=config["database"]["port"],
database=config["database"]["database"],
)
df = pd.read_sql("SELECT * FROM n_chokyo", con=con)
コードは注意してご使用ください。
content_copy
3. JSON ファイル
JSON ファイルは、JavaScript Object Notation の略で、データ交換用のフォーマットです。
設定例
JSON
{
"database": {
"user": "root",
"password": "password",
"host": "localhost",
"port": 3306,
"database": "mydb"
}
}
コードは注意してご使用ください。
content_copy
読み込み例
Python
import json
with open("config.json", "r") as f:
config = json.load(f)
con = "mysql://{user}:{password}@{host}:{port}/{database}".format(
user=config["database"]["user"],
password=config["database"]["password"],
host=config["database"]["host"],
port=config["database"]["port"],
database=config["database"]["database"],
)
df = pd.read_sql("SELECT * FROM n_chokyo", con=con)
コードは注意してご使用ください。
content_copy
上記以外にも、専用のライブラリを使用して設定ファイルを管理する方法もあります。
この記事が気に入ったらサポートをしてみませんか?