multiple yields in context manager = bad idea - instead wrap connection with a db transaction