Python Database Interfaces - Any Standard?

Thomas A. Bryan tbryan at python.net
Tue Dec 26 01:31:47 EST 2000


Brian Knox wrote:
> 
> The Perl DBI consists of two parts: the non database specific DBI module
> (DBI.pm). Then there is a DBD (DataBase Driver) module for each database.
> So, if I wanted to say work with Oracle, I'd use DBI.pm and the Oracle DBD.
> 
> use DBI;
> $dbh = DBI->connect( $dbi:Oracle:archaeo", "username", "password" );
> 
> To switch to say PostgreSQL, just change "Oracle" to "Pg" and make sure you
> have the DBD.

I haven't done much with Python and databases (yet), but I think that the 
idea is to be able to write 

import DCOracle
dbh = DCOracle.Connect( connect_string )
query = dbh.cursor()
query.execute( query_string )


To change to PostgreSQL, you'd have to change the import and the connection.

import pg
dbh = pg.connect( connect_string )
query = dbh.cursor()
query.execute( query_string )

Of course, this sort of change only works to the extent that you avoid 
any database-specific features of the database and the module that you're 
using.Some people achieve that goal, but it can be difficult in some 
applications to squeeze all of the performance you need without using some 
special feature that isn't portable.

---Tom



More information about the Python-list mailing list