在写数据库运维脚本时,会涉及到很多数据库的运维,如果将脚本放到数据库服务器上,就只针对一个数据库来使用,但如果想在一台设备上去管理所有数据库,那么就需要去设计这个脚本的通用性。
看很多软件,实际上都会有一个配置文件,可以将一些数据库信息、通用信息都放在配置文件中,然后再去调用。
常规的配置文件格式包括.ini
,.toml
,.yaml
等。
从网上的评价来看,用.ini
和.toml
的比较多,主要是这两种较为简单,使用起来也方便。
python的第三方包有:
- Configparser,用于操作INI文件,操作方便
- toml,用于操作toml文件,实际上就是通过字典的方式来操作。
TOML和INI文件格式的区别
- toml中变量值支持多种格式,ini中默认为字符串格式。
- toml中字符串必须加引号,单引号,双引号都可以,ini中字符串不加引号.
- toml中只能使用
key=value
形式,ini中可以使用key=value
或key : value
形式. - toml中只支持
#
号注释,可以写到变量值后,也可以独占一行,ini文件中支持;
和#
注释,一般要独占一行。 - toml中支持字段嵌套,ini不支持。
- toml中的选项(变量名)大小写敏感,如host,ini中选项(变量名),大小写不敏感
通过最近一段时间的使用,发现configparser有个小问题,如果同时读取多个文件时,那么在修改保存的时候,保存的文件会复制其他文件的内容。
|
|
如下文件,我们用configparser读了两个配置文件,然后修改配置文件a.ini,那么保存后会发现b.ini中的信息也保存到a.ini中了。
|
|
这种功能不是我想要的,因此我想到了toml来实现。
toml的修改操作不如ConfigParser,因此如果是静态参数配置文件,那么toml更适合,如果是需要根据运行情况不断去修改参数值的,则ConfigParser更好。