Se meget nøje på SQLAlchemy.
Du kan teste og udvikle med SQLite.
Du kan gå i produktion med MySQL – stort set ingen ændringer i dine applikationer.
Selvom DB-API’en er bredt overholdt, har den tilstrækkelig fleksibilitet til at (1) du ikke er isoleret fra SQL-variation i det underliggende RDBMS og (2) der stadig er DB-driverspecifikke funktioner, som er svære at skjule.
Et andet godt ORM-lag er ORM, der er en del af Django . Du kan (med en lille indsats) kun bruge Django ORM uden at bruge resten af Djangos webramme.
Brug et ORM-lag (SQLAlchemy eller SQLObject) frem for DB-API.
Hvorfor? Din model skal være en solid, klar, gennemtænkt OO-model. Den relationelle kortlægning bør komme i anden række efter objektmodellen. SQLAlchemy gør dette til en rimelig tilgang.
Et "DB Abstraktionslag" vil ske i det normale hændelsesforløb. På grund af DB-API (som brugt af SQLAlchemy) gav du faktisk to abstraktionslag:ORM og DB-API.