Hi,
dataSourceUri is used when creating the dataProvider/vectorlayer and there is no way to refresh the provider according to a new uri. I don't see any other way than recreate a new QgsVectorLayer with the new dataSource uri, add it to your project instance with addMapLayer and remove the old one. Maybe there is a trick to simplify things but I fail to see how. Regards, Julien > Hi Devs, > > I'm trying to change the dataSourceUri of an existing layer, but can't > get it working. The reason is that my layer should be connected to > another view in the same database, because the db should do some > calculations for my plugin. > > I created a test script for a simple polygon layer in a gpkg, which I > attached to this email. The layer "polygons" and both views are all > working correctly if you just drag and drop the gpkg in QGIS. > > Open the polygons layer and select it. Then run: > > > layer = iface.activeLayer() > provider = layer.dataProvider() > > ds = provider.dataSourceUri() > print(ds) > > fn = ds.split('|layername=')[0] > new_ds = fn + '|layername=highest_3_view' > print(new_ds) > > provider.setDataSourceUri(new_ds) > > > > > The first run displays 2 different dataSourceUris: > path/to/test_views.gpkg|layername=polygons > path/to/test_views.gpkg|layername=highest_3_view > > The second run displays 2x the same dataSourceUris: > path/to/test_views.gpkg|layername=polygons > path/to/test_views.gpkg|layername=highest_3_view > > So the string has been changed. But my layer properties still point to > path/to/test_views.gpkg|layername=polygons > > and the features displayed are all 5 from the polygons layer. (The views > have only 3 features) > > > > Should i do something after setting the new provider? I've been trying > many things, including: > * provider.reloadData() > * layer.setDataProvider(dataprovider) > * refreshing/redrawing the layer > > > Hope anyone can help! > Raymond_______________________________________________ > QGIS-Developer mailing list > QGIS-Developer@lists.osgeo.org > List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer _______________________________________________ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer