http://qs321.pair.com?node_id=798147


in reply to Re: DBI Module Question
in thread DBI Module Question

Is it just me or would the DBI connect syntax make a lot more sense if instead of concatenating a whole bunch of stuff together, it would just accept named arguments?
my $dbh = DBI->connect( driver => 'Pg', dbname => 'foo', host => 'foo', user => 'bar', password => 'something' );

Replies are listed 'Best First'.
Re^3: DBI Module Question
by Tux (Canon) on Sep 30, 2009 at 08:06 UTC

    For me it would not, but I might be biased. A simple reason might be that in my case the DSN is read from $ENV{DBI_DSN}, as I work in an environment where I use the same content on many different database types, and my scripts should not care about the way to connect to the source.

    So the first three of your parameters I would never use. Then there is the freedom (shrug) of the DBD authors to implement the DSN in a way that best matches the underlying database, which is why you will see variations in 'database=', 'db=', 'dbname=' etc. It would be a disaster to build all that in DBI, which is just the API to all the DBD modules.

    User and password make sense to most databases, but certainly not to all.

    Personally, I think that $dbh = DBI->connect (dsn, usr, pw, { attr }); is a very good compromise that is easy to remember.


    Enjoy, Have FUN! H.Merijn