Questa affermazione:
cursor.execute(sql, multi=True)
crea un iteratore sui risultati. Sembra che sia pigro (cioè, esegue le istruzioni SQL solo se necessario). Non chiedi mai i risultati per la seconda istruzione, quindi sta eseguendo solo la prima. Prova:
for _ in cursor.execute(sql, multi=True): pass
In generale è meglio usare solo execute()
separati chiamate.