環境設定python

データベース接続情報をソースコードに直接書き込むことは、セキュリティ上推奨されません。接続情報を外部ファイル(INIファイル、YAMLファイル、JSONファイル、または.envファイル)に分離することで、以下のようなメリットがあります。

  1. セキュリティの向上: ソースコードに接続情報を直接書くと、ソースコード管理システム(例:Git)に接続情報が保存されてしまい、不正なアクセスのリスクが高まります。外部ファイルに分離し、それらのファイルをソースコード管理から除外することで、このリスクを低減できます。

  2. 設定の柔軟性: 開発環境、テスト環境、本番環境など、異なる環境で異なる設定を容易に適用できます。

  3. 保守性の向上: 設定情報を一箇所に集約することで、変更が発生した際の修正作業が簡単になります。

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

上記以外にも、専用のライブラリを使用して設定ファイルを管理する方法もあります。

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