Titta mycket noga på SQLAlchemy.
Du kan testa och utveckla med SQLite.
Du kan gå i produktion med MySQL -- gör i princip inga ändringar i dina applikationer.
Även om DB-API tillämpas allmänt, har den tillräckligt med flexibilitet för att (1) du inte är isolerad från SQL-variationer i det underliggande RDBMS och (2) det fortfarande finns DB-drivrutinsspecifika funktioner som är svåra att dölja.
Ett annat bra ORM-lager är ORM som är en del av Django . Du kan (med lite ansträngning) bara använda Django ORM utan att använda resten av Djangos webbramverk.
Använd ett ORM-lager (SQLAlchemy eller SQLObject) framför DB-API.
Varför? Din modell ska vara en solid, tydlig, genomtänkt OO-modell. Den relationella mappningen bör komma i andra hand efter objektmodellen. SQLAlchemy gör detta till ett rimligt tillvägagångssätt.
Ett "DB Abstraktionslager" kommer att ske i det normala händelseförloppet. På grund av DB-API (som används av SQLAlchemy) gav du faktiskt två abstraktionslager:ORM och DB-API.