Pour ceux qui recherchent toujours une réponse à cela sans utiliser de format spatialite, j'ai trouvé quelque chose qui fonctionne.
Si vous avez un csv et utilisez une jointure pour le joindre à une couche spatiale, l'une des options de la jointure est de mettre en cache la couche. Vous pouvez accéder à cette option si vous accédez aux propriétés de votre couche, puis aux données jointes et cliquez sur modifier la jointure. Si vous désactivez l'option de cache , vous pouvez recharger la couche de données après la modification du csv, puis déclencher une nouvelle peinture de votre carte pour obtenir une vue de carte actualisée.
Vous pouvez effectuer le rechargement et la repeinture dans la console Python. Tout d'abord, vous devez définir un nom pour le canevas de carte, le csv et pour la couche:
mc = iface.mapCanvas()
layer=mc.currentLayer()
csv_layer=mc.currentLayer()
Assurez-vous d'avoir les calques actifs lorsque vous les nommez dans la console lors de l'utilisation de la méthode currentLayer (ce doit être le «calque actuel»).
Ensuite, si vous définissez l'option de cache comme désactivée pour votre jointure, vous pouvez modifier le csv, puis utiliser les deux commandes suivantes dans la console Python pour redessiner votre carte:
csv_layer.reload()
layer.triggerRepaint()
Cela a fonctionné pour moi, mais je n'avais que 100 lignes de données. Il se peut que les opérations soient lentes sans mise en cache lorsque vous disposez d'un plus grand ensemble de données.