1 はじめに
最近、私は MySQL データベース インスタンスのバックアップと復元について研究しています。古いデータ構成と新しいインスタンスの my.cnf 構成が一致していないかどうかを判断するために、backup-my.cnf を使用しています。パラメータが変更されました。 my.cnf を解析するにはどうすればよいですか?そこで、Python が提供する ConfigParser モジュールを勉強しました。このモジュールは、一般的な構成ファイルの読み取りと変更操作を完了でき、基本的にニーズを満たします。
2 使用方法
2.1 設定ファイルの形式
設定ファイルは主にセクション領域で構成されており、セクション内でパラメータを設定するためにoption=valueまたはoption:valueを使用できます。
[セクション1の名前]
オプション1=値1
....
オプションN=値N
[セクション2の名前]
オプション1=値1
....
オプションN =valueN
一般的な my.cnf 形式は次のとおりです
[mysqld]
innodb_log_files_in_group = 2
innodb_page_size = 16384
innodb_log_block_size = 512
innodb_data_file_path = ibdata1:2G:autoextend
innodb_log_file_size = 536870912
2.2 ConfigParser モジュール
Python の ConfigParser モジュールは、RawCnfigParser、ConfigParser、SafeConfigParser の 3 つのクラスを定義します。その中で、RawCnfigParser は、ConfigParser、SafeConfigParser が作成した最も基本的な設定ファイル読み取りクラスです。 RawCnfigParser に基づく独自の拡張機能
この記事主に例として ConfigParser クラスを使用します。 ConfigParser モジュールの操作には主に以下が含まれます:
a ConfigParser インスタンスを初期化する
b 構成を読み取る
c 構成を変更する
構成ファイルを読み取るための一般的なメソッド
cf.read(filename) 構成ファイルの内容を読み取る
cf.sections() すべてのセクションを取得し、リストの形式で返します
cf.options(section) 指定されたセクションの下のすべてのオプションを取得します
cf.items(section) すべてのキーと値のペアを取得します指定されたセクションの下をタプルとして返します
cf.get(section,option) の形式で返します 指定されたセクションのオプションの値を取得し、文字列型として返します
cf.getint(section,option)指定されたセクションのオプションの値をint型で返します
cf.has_option(section,option) セクションの下に指定されたオプションがあるかどうかを確認し、あればTrue、ない場合はFalseを返します
cf.has_section (section) セクションの有無を確認し、あればTrue、なければFalseを返す
修正 設定ファイルのよく使われるメソッド
cf.add_section(section) 設定ファイルに新しいセクションを追加する
cf .set(section, option, value) セクション内のオプションを設定します
cf.remove_section(section) 指定されたセクションを削除します
cf.remove_option(section,option) 指定されたセクション内のオプションを削除します
注構成ファイルを変更するには、write を呼び出して内容を構成ファイルに書き込む必要があります。
2.3 例
(ここ) をクリックして折りたたむか開きます
#!/usr/bin/python2.6
#coding:utf8
import ConfigParser
old_mycnf_file='backup-my.c NF '
new_mycnf_file='my.cnf'
cf =ConfigParser.ConfigParser()
cf.read(new_mycnf_file)
sec=cf.sections()
print 'セクション:' ,秒
opts= cf.options( "mysqld")
print 'options:'、opts
kvs= cf.items( "mysqld")kvs in kvs:
printkv
innodb_data_file_path=cf.get('mysqld','innodb_data_file_path')
innodb_log_file_size=cf.get('mysqld','innodb_log_file_size')
print 'innodb_data_file_path :' _data_file _path
print 'innodb_log_file_size : ',innodb_log_file_size
print "変更後"
cf.set('mysqld','innodb_data_file_path','ibdata1:1G:autoextend')
cf.write(open(new_mycnf_file, "w") )
cf.read(new_mycnf_file)
innodb_data_file_path=cf.get('mysqld','innodb_data_file_path')
print 'innodb_data_file_path :',innodb_data_file_path
セクション: ['mysqld']
オプション: ['innodb_log_files_in_group', 'innodb_page_size', 'innodb_log_block_size', 'innodb_data_file_path', 'innodb_log_file_size']
('in db_log_files_in_group がありません', '2 ')
('ibdata1', '2g:autoextend = ibdata1:2G:autoextend')
innodb_data_file_path : ibdata1:1G:autoextend
innodb_log_file_size : 536870912
変更後
3 つのまとめ
ConfigParser モジュールが提供する機能に基づいて、基本的に日常業務での構成ファイルの変更ニーズを満たすことができます。詳細については、公式ドキュメントを参照してください。