[DB-SIG] Other extensions

Andy Todd andy47 at halfcooked.com
Sat Jul 21 14:02:15 CEST 2007


Michael Bayer wrote:
> On May 15, 2007, at 3:29 PM, Michael Bayer wrote:
> 
>> DBAPI needs to remain as the most minimal layer of standardization
>> possible (and i think it should remain about SQL.  to support other
>> query languages would invariably require much richer APIs)...it just
>> would be nice to iron out the API variances in implementations a
>> little better...particularly things like dates, floats/Decimal, more
>> accurate method specifications (like explictly requiring the named
>> argument "size" when the spec says "fetchmany(size=x)"), expected
>> return results of execute()/executemany(), unicode.
>>
> 
> also on this subject, has there been any thought given to creating a  
> DBAPI "compliance test" suite ?  one that does all the regular things  
> a DBAPI should provide and produces a report of what percentage of  
> required functionality is met ?   this would be something you could  
> send to a DBAPI author to...erm "encourage" him or her to get in line  
> with a standard methodology rather than making arbitrary decisions.   
> the current PEP does seem to encourage editorializing so its not all  
> their fault.
> 
> examples would include:
> 
> 	- update several rows of a table, where not all rows actually get  
> modified.  ensure that cursor.rowcount meets the number of rows  
> matched (not only those modified).  MySQLDB will fail this unless a  
> special argument is sent to connect().   check that it works for  
> executemany() too (most DBAPIs dont seem to get this one right).
> 
> 	- test all the functions (like fetchmany(), etc.) using named  
> arguments as well as positional arguments.  several DBAPIs dont  
> recognize the named parameter "size" to fetchmany() for example,  
> other DBAPIs choke when "parameters" is not present on execute().
> 
> 	- test that all required types (e.g. Binary, Timestamp, etc.) are  
> present.  cx_Oracle doesnt provide Binary for example (even though it  
> has plenty of binary support?!)
> 
> 	- test that the return result of a BLOB/CLOB/binary column is a  
> python buffer (cx_Oracle returns the surprising LOB object, MySQLDB  
> returns a non-buffer object).  of course this would be better suited  
> if words like "preferred" were replaced with "expected" in the PEP.
> 
> 	- test that cursor.description works immediately (psycopg2 has  
> special requirements in this regard when using server-side cursors)
> 
> 	- test that an OperationalError is raised immediately upon execute 
> (), cursor(), etc. when the database has been disconnected (theyre  
> all over the map on this one).
> 
> 
> _______________________________________________
> DB-SIG maillist  -  DB-SIG at python.org
> http://mail.python.org/mailman/listinfo/db-sig

Stuart Bishop did some work a couple of years ago as part of the Gadfly 
project. You can see the test code via CVS here;

http://gadfly.cvs.sourceforge.net/gadfly/gadfly/test/dbapi20.py?view=log

It could be used as a starting point for a compliance test suite. An 
idea I think should certainly be given some serious consideration.

Regards,
Andy
-- 
 From the desk of Andrew J Todd esq - http://www.halfcooked.com/


More information about the DB-SIG mailing list