0

I have a config.py which reads in multiple config files.

from ConfigParser import *

def zones_config():
  zones_config = ConfigParser()
  zones = zones_config.sections()
  zones_config.read('zones.ini'), zones

def settings_config():
  settings_config = ConfigParser()
  settings_config.read('settings.ini')

Then in my database.py file:

from utils.config import settings_config

settings_config()

#mysqbdb config
ip = settings_config.get('mysqldb', 'ip')
username = settings_config.get('mysqldb', 'username')
password = settings_config.get('mysqldb', 'password')
database = settings_config.get('mysqldb', 'database')

However I get the following error:

AttributeError: 'function' object has no attribute 'get'
JohnTaylor
  • 35
  • 6

1 Answers1

5

settings_config is a function, and .get() is a method of the ConfigParser object. This should explain it more clearly:

def settings_config_function():
  settings_config_object = ConfigParser()
  settings_config_object.read('settings.ini')
  return settings_config_object

Then in database.py:

from utils.config import settings_config_function

config_object = settings_config_function()

#mysqbdb config
ip = config_object.get('mysqldb', 'ip')
username = config_object.get('mysqldb', 'username')
password = config_object.get('mysqldb', 'password')
database = config_object.get('mysqldb', 'database')

Edit:

I also recommend you call

settings_config_object = settings_config_function()
another_example_config_object = another_example_config_function()

once at the bottom of config.py and later just

from utils.config import settings_config_object, another_example_config_object

in any files that require the configs, so that you don't have to instantiate a new ConfigParser and read the config files for every module that uses the config.

Nee
  • 566
  • 2
  • 17