[QGIS-Developer] changeAttributeValue() slower after editing

Martin Landa landa.martin at gmail.com
Sat Jun 9 01:30:21 PDT 2018


Hi,

I am running method to update attributes. Here is a simplified version:

"""
    def recalculateAttributes(self):
        self._layer.setReadOnly(False)
        self._layer.startEditing()

        features = self._layer.getFeatures()
        for feat in features:
            self._layer.changeAttributeValue(feat.id(), 2, 1)

        self._layer.commitChanges()
        self._layer.setReadOnly(True)
"""

I am running this function after loading (seems OK) and after editing:

"""
                layer.setReadOnly(False)
                iface.actionToggleEditing().trigger()
                iface.actionDeleteSelected().trigger()
                iface.actionSaveActiveLayerEdits().trigger()
                iface.actionToggleEditing().trigger()
                layer.setReadOnly(True)
"""

In this case recalculateAttributes() runs at least 3-4x slower. On my
PC of my colleague even 10x slower.

Layer is stored in SQLite format. Using QGIS 2.18.20. Any idea what
could be wrong? Thanks! Martin

-- 
Martin Landa
http://geo.fsv.cvut.cz/gwiki/Landa
http://gismentors.cz/mentors/landa


More information about the QGIS-Developer mailing list