Przyjrzyj się uważnie SQLAlchemy.
Możesz testować i programować za pomocą SQLite.
Możesz przejść do środowiska produkcyjnego z MySQL -- zasadniczo nie wprowadzając żadnych zmian w swoich aplikacjach.
DB-API, chociaż jest powszechnie stosowane, ma wystarczającą elastyczność, że (1) nie jesteś odizolowany od wariacji SQL w bazowym RDBMS i (2) nadal istnieją funkcje specyficzne dla sterownika DB, które są trudne do ukrycia.
Inną dobrą warstwą ORM jest ORM, który jest częścią Django . Możesz (przy odrobinie wysiłku) używać tylko ORM Django bez korzystania z reszty frameworka sieciowego Django.
Użyj warstwy ORM (SQLAlchemy lub SQLObject) zamiast DB-API.
Czemu? Twój model powinien być solidnym, przejrzystym, przemyślanym modelem OO. Mapowanie relacyjne powinno zająć drugie miejsce po modelu obiektowym. SQLAlchemy sprawia, że jest to rozsądne podejście.
„Warstwa abstrakcji DB” wystąpi w normalnym toku zdarzeń. Rzeczywiście, z powodu DB-API (używanego przez SQLAlchemy) dałeś dwie warstwy abstrakcji:ORM i DB-API.