Hi all,

I'm trying to determine the best way to toggle between my test and live dbs,
and I've hit a bit of a wall. I'm using MySQL 5.0.22 and SQLObject 0.7, and
since I'm in a corporate environment, neither of those is likely to change
any time soon.

My setup is as follows:

I've got two dbs, which I'll call *app* and *app_dev*, living on different
hosts and accessed by different users. My connection is set up is in my
model as follows:

  password_map={"app":{'username': passwords.LIVE_USERNAME,
                       'passwd': passwords.LIVE_PASSWORD,
                       'host': 'app'},
                "app_dev":{'username': passwords.DEV_USERNAME,
                           'passwd': passwords.DEV_PASSWORD,
                           'host': 'app_dev"}}

  _connection = connectionForURI(
      "mysql://%(username)s:%(passwd)[EMAIL PROTECTED](host)s/%(db)s" %
      {'username': password_map[Config.DB_NAME]['username'],
       'passwd': password_map[Config.DB_NAME]['passwd'],
       'db': Config.DB_NAME,
       'host': password_map[Config.DB_NAME]['host']})

I set up my unit tests like this:
from <package> import Config
Config.DB_NAME = app_dev
from <package> import model

This isn't an especially good practice, and I'm trying to figure out how to
change my connection after I import my model.

My original thought was to set up a class method to toggle back and forth:

  @classmethod
  def changeDatabase(cls, database):
    """Toggles between live and dev databases.

    database: string, one of ("app", "live", "app-dev", "dev").
    """
    if database in ["app", "live"]:
      cls._connection = connectionForURI(cls.live_connection_string)
    elif database in ["app-dev", "dev"]:
      cls._connection = connectionForURI(cls.dev_connection_string)
    else:
      raise ValueError("database must be one of ('app', 'live', "
                       "'app-dev', 'dev')")

However, this method results in a lost connection to the second DB. Is there
a better way to switch between different connections? Would a hub help, or
is that only for managing multiple connections to the same db across
threads?

Thanks,
Molly
-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to