Comparison of test support by several DB-API implementations.
| Test Name | psycopg2 | pysqlite2 | mysqldb |
| Required exceptions are in the defined heirachy. | Pass | Pass | Pass |
| Driver defines apilevel | Pass | Pass | Pass |
| Can connect to database | Pass | Pass | Pass |
| Driver defines paramstyle | Pass | Pass | Pass |
| Driver defines threadsafety | Pass | Pass | Pass |
| Module defines BINARY | Pass | Fail | Pass |
| Module supports Binary | Pass | Pass | Pass |
| Module defines DATETIME | Pass | Fail | Pass |
| Module supports Date and DateFromTicks | Pass | Pass | Pass |
| Module supports DateFromTicks | Pass | Pass | Pass |
| Module defines NUMBER | Pass | Fail | Pass |
| Module defines ROWID | Pass | Fail | Pass |
| Module defines STRING | Pass | Fail | Pass |
| Module supports Time and TimeFromTicks | Pass | Pass | Pass |
| Module supports TimeFromTicks | Pass | Pass | Pass |
| Module supports Timestamp and TimestampFromTicks | Pass | Pass | Pass |
| Module supports TimestampFromTicks | Pass | Pass | Pass |
| Module's date is equivalent to datetime's date | Pass | Pass | Pass |
| Module's time attribute is equivalent to datetime's time | Pass | Pass | Pass |
| Module's Timestamp attribute is equivalent to datetime's datetime | Pass | Pass | Pass |
| Connection objects should include the exceptions as attributes (optional) | Pass | Pass | Pass |
| Connection should fail using bogus database | Pass | Fail | Pass |
| Connection should fail using bogus password | Pass | Fail | Pass |
| Connection should fail using bogus username | Pass | Fail | Pass |
| Can't commit, execute, or close a closed connection | Pass | Fail | Pass |
| Can't close a closed connection | Pass | Fail | Pass |
| Can't commit a closed connection | Pass | Pass | Pass |
| Commit must be defined, even if it doesn't do anything | Pass | Pass | Pass |
| Consecutive commits should be successfull | Pass | Pass | Pass |
| Connections need to be able to create cursors | Pass | Pass | Pass |
| Connection should fail using blank password | Pass | Fail | Pass |
| Rollback must work or throw NotSupportedError. | Pass | Pass | Pass |
| Consecutive rollbacks should be successfull | Pass | Pass | Pass |
| Successful connect and close | Pass | Pass | Pass |
| Fetchmany works with BLOBs. | Pass | Pass | Pass |
| Cursor must define arraysize | Pass | Pass | Pass |
| BLOB (file) | Fail | Fail | Fail |
| Connections must have cursor method | Pass | Pass | Pass |
| A cursor can read it's own uncommited data | Pass | Pass | Pass |
| Cursor description describes columns correctly | Pass | Pass | Pass |
| Fetch methods should raise Error if no query issued | Pass | Fail | Fail |
| Insert multiple rows using executemany | Pass | Pass | Pass |
| Fetchall retrieves rows & sets rowcount | Pass | Pass | Pass |
| Fetchall returns accurate data | Pass | Pass | Pass |
| Fetchmany retrieves rows & sets rowcount | Pass | Pass | Pass |
| Fetchone retrieves row & sets rowcount | Pass | Pass | Pass |
| Can mix fetchone, fetchmany, and fetchall | Pass | Pass | Pass |
| Rowcount matches the number of rows inserted | Pass | Pass | Pass |
| Rowcount should be 1 after singleton insert | Pass | Pass | Pass |
| Insert works with cursor.setinputsize | Pass | Pass | Pass |
| Insert works with cursor.setoutputsize | Pass | Pass | Fail |
| Handle Python's None as a database null | Pass | Pass | Pass |
| Insert a multitude of date/time datatypes in one statement using datetime | Pass | Fail | Pass |
| Insert a multitude of date/time datatypes in one statement using strings | Pass | Pass | Pass |
| Insert dates using datetime dates | Pass | Pass | Pass |
| Insert dates using strings | Pass | Pass | Pass |
| Insert time using datetime's time | Pass | Fail | Fail |
| Insert time using string | Pass | Pass | Pass |
| Insert time with subsecond precision using datetime's time | Pass | Fail | Pass |
| Insert time with subsecond precision using string | Pass | Pass | Pass |
| Insert timestamp using datetime's datetime | Pass | Pass | Pass |
| Insert timestamp with subsecond precision using strings | Pass | Pass | Fail |
| Stored procedure calls return result sets | Fail | Fail | Fail |