SqlAlchemy è il nuovo arrivato tra i package che si prefiggono di realizzare un mapping tra le istanze degli oggetti in un linguaggio di programmazione e i record di un database relazionale. La diversa natura di un database relazionale rispetto ad un linguaggio di programmazione ad oggetti fa sì che tale mapping possa essere non banale o che, accettando un minimo comune denominatore, si perdano le caratteristiche di espressività della programmazione object-oriented o di efficienza dei DBMS. Il problema è conosciuto come "Object-relational impedance mismatch". SqlAlchemy consente di modificare alcune classi Python in maniera non invasiva, in modo da renderle serializzabili all'interno di un database relazionale. Tra gli altri ORM disponibili per Python, SqlAlchemy ha la caratteristica di non richedere che il database venga progettato in base agli oggetti Python (ad esempio è possibile generare mapping verso query comprendenti più tabelle e tabelle con chiavi primarie composite) rendendolo particolarmente adatto a creare interfacce ad oggetti verso database preesistenti. Nell'intervento verranno illustrati la flessibilità dei mapping realizzabili (query verso tabelle multiple, ereditarietà), le caratteristiche degli oggetti mappati (caricamento "eager" o "lazy" deli oggetti associati o di loro attributi ingombranti) e i pattern di utilizzo degli oggetti (molti dei quali ispirati a pattern descritti in "Patterns of Enterprise Application Architecture" di M. Fowler, quale la "Unit of Work").