I think the DBAPI doesn't support several results set in a single statement.
If you cared to do those one line at a time you'd noticed that:
create temporary table tmp like people does not return results.
insert into tmp select * from people returns the just inserted values
select * from tmp returns your lines.
I think that as long as you have only one statement (and it's the last ) in your executesql() wrapped string you'll be fine. If some of your lines returns results, then the driver doesn't know what set to actually return.
Anyway splitting those lines in multiple db.executesql()s is working great.