Esta afirmação:
cursor.execute(sql, multi=True)
cria um iterador sobre os resultados. Parece que é preguiçoso (ou seja, executa instruções SQL apenas conforme necessário). Você nunca está solicitando os resultados da segunda instrução, portanto, está apenas executando a primeira. Experimentar:
for _ in cursor.execute(sql, multi=True): pass
Em geral, é melhor apenas usar
execute()
separado chamadas.