Regardez de très près SQLAlchemy.
Vous pouvez tester et développer avec SQLite.
Vous pouvez passer en production avec MySQL, sans apporter pratiquement aucune modification à vos applications.
L'API DB, bien que largement respectée, a suffisamment de flexibilité pour que (1) vous ne soyez pas isolé des variations SQL dans le SGBDR sous-jacent et (2) il existe encore des fonctionnalités spécifiques au pilote de base de données qui sont difficiles à masquer.
Une autre bonne couche ORM est l'ORM qui fait partie de Django . Vous pouvez (avec un peu d'effort) utiliser uniquement l'ORM Django sans utiliser le reste du framework Web Django.
Utilisez une couche ORM (SQLAlchemy ou SQLObject) de préférence à DB-API.
Pourquoi? Votre modèle doit être un modèle OO solide, clair et bien pensé. Le mappage relationnel devrait venir en deuxième position après le modèle objet. SQLAlchemy en fait une approche raisonnable.
Une "couche d'abstraction DB" se produira dans le cours normal des événements. En effet, à cause de DB-API (tel qu'utilisé par SQLAlchemy), vous avez donné deux couches d'abstraction :ORM et DB-API.