[DB-SIG] Oracle tables encapsulation

Stuart 'Zen' Bishop zen@cs.rmit.edu.au
Mon, 6 Dec 1999 11:54:27 +1100 (EST)

On Fri, 3 Dec 1999, M.-A. Lemburg wrote:

> Stuart 'Zen' Bishop wrote:
> > 
> > I've attached some code I've been playing with.
> > ...
> > 
> > Its currently Oracle specific, since there is no generic method of
> > binding parameters that I know of making it rather difficult to write
> > cross platform database stuff using Python at the moment.
> What about cursor.execute('select * from MyTable where id=?',(1,)) ?
> Or did you mean the parameter marks in the SQL statement ? Note
> that DBAPI 2.0 compatible interfaces will provide a flag that
> indicates what mark to use: paramstyle.

Yes - I meant the parameter marks in the SQL statement.

The best solution I can come up with would be a module which 
provides a thin level of abstraction to DBAPI 2.0 interfaces.
Initial implementation could be identical to DBAPI 2.0, except that
the connect method would require a DBAPI module name.

Advantages -
    common autocommit mode

    common paramstyles

    common thread safety (if the driver doesn't support the required level,
    a seperate thread could be spawned and all transactions are passed to
    this thread for execution. Or it could just throw an exception if calls
    are made from unsupported threads if we are feeling lazy).

    ability to write 'generic' SQL and distribute product where the
    end user can easily select the DBMS

    ability to fatten the API with useful helper functions, without
    requiring everyone to reinvent their wheels or cut&paste code

    Could be incorporated into the python distribution, possibly
    with Gadfly or PostgreSQL if the licences are compatible.

    A generic Zope DA could possibly be written to have Zope support
    more databases.

   //     Zen (alias Stuart Bishop)     Work: zen@cs.rmit.edu.au
  // E N  Senior Systems Alchemist      Play: zen@shangri-la.dropbear.id.au
 //__     Computer Science, RMIT 	 WWW: http://www.cs.rmit.edu.au/~zen