Jag hade ett liknande problem med att pyODBC infogades i en SQL Server 2008 DB med executemany(). När jag körde en profilspårning på SQL-sidan skapade pyODBC en anslutning, förberedde den parametriserade infogningssatsen och körde den för en rad. Då skulle det oförbereda uttalandet och stänga anslutningen. Den upprepade sedan denna process för varje rad.
Jag kunde inte hitta någon lösning i pyODBC som inte gjorde detta. Det slutade med att jag bytte till ceODBC för att ansluta till SQL Server, och den använde de parametriserade satserna korrekt.