Esta declaración:
cursor.execute(sql, multi=True)
crea un iterador sobre los resultados. Parece que es perezoso (es decir, ejecuta instrucciones SQL solo cuando es necesario). Nunca está solicitando los resultados de la segunda declaración, por lo que solo está ejecutando la primera. Prueba:
for _ in cursor.execute(sql, multi=True): pass
En general, es mejor usar execute()
por separado llamadas.