def make_dsn(dsn=None, **kwargs): """Convert a set of keywords into a connection strings.""" if dsn is None and not kwargs: return '' # If no kwarg is specified don't mung the dsn, but verify it if not kwargs: parse_dsn(dsn) return dsn # Override the dsn with the parameters if 'database' in kwargs: if 'dbname' in kwargs: raise TypeError( "you can't specify both 'database' and 'dbname' arguments") kwargs['dbname'] = kwargs.pop('database') # Drop the None arguments kwargs = dict((k, v) for (k, v) in kwargs.items() if v is not None) if dsn is not None: tmp = parse_dsn(dsn) tmp.update(kwargs) kwargs = tmp dsn = " ".join( ["%s=%s" % (k, _param_escape(str(v))) for (k, v) in kwargs.items()]) # verify that the returned dsn is valid parse_dsn(dsn) return dsn
def make_dsn(dsn=None, **kwargs): """Convert a set of keywords into a connection strings.""" if dsn is None and not kwargs: return '' # If no kwarg is specified don't mung the dsn, but verify it if not kwargs: parse_dsn(dsn) return dsn # Override the dsn with the parameters if 'database' in kwargs: if 'dbname' in kwargs: raise TypeError( "you can't specify both 'database' and 'dbname' arguments") kwargs['dbname'] = kwargs.pop('database') # Drop the None arguments kwargs = dict((k, v) for (k, v) in kwargs.iteritems() if v is not None) if dsn is not None: tmp = parse_dsn(dsn) tmp.update(kwargs) kwargs = tmp dsn = " ".join(["%s=%s" % (k, _param_escape(str(v))) for (k, v) in kwargs.iteritems()]) # verify that the returned dsn is valid parse_dsn(dsn) return dsn