Bonjour Sylvain, J'espère que vous allez bien.
If you want to append features from a source layer to another layer that already exists in a GPKG file, you can do this: ----------------------------------------------------------------------------------------------------- options = QgsVectorFileWriter.SaveVectorOptions() options.driverName = "GPKG" options.layerName = "my_existing_layer_name" *# Write here the existing layer name in the GPKG* options.actionOnExistingFile = QgsVectorFileWriter.AppendToLayerNoNewFields options.onlySelectedFeatures = True path = "/tmp/existing_gpkg_file_path.gpkg" layer = QgsVectorLayer("/tmp/my_source_layer.shp", "my source layer name", "ogr") result = QgsVectorFileWriter.writeAsVectorFormatV3( layer, path, *# Existing GPKG file path* layer.transformContext(), options) ----------------------------------------------------------------------------------------------------- If on the contrary, you want to append a whole layer (with its own field structure, crs, etc.) to an existing GPKG database, you can follow this solution: https://gis.stackexchange.com/a/417950 As you can see, the key is to define the options.actionOnExistingFile property, whose possible values are well documented here: https://api.qgis.org/api/3.28/classQgsVectorFileWriter.html#afda86eff21ac1da7dc42cbdde424acb1 *Note: SInce we're using writeAsVectorFormatV3(), you need at least QGIS v3.20 for this solution to work.* Regards, Germán El mié, 19 abr 2023 a las 3:55, PIERRE Sylvain via QGIS-Developer (< qgis-developer@lists.osgeo.org>) escribió: > Hi dev and users > > > > I don’t understand how to append an existing gpkg layer with pyqgis. > > I’ve tried many QgsVectorFileWriter options > > > > self.options.actionOnExistingFile = > QgsVectorFileWriter.CreateOrOverwriteLayer > > > > reset final layer > > > > And > > self.options.EditionCapability = > QgsVectorFileWriter.CanAppendToExistingLayer > > > > does not change anything > > > > So what’s the good way to do this ? > > > > This is my code (I’m iterating over several other data sources) > > self.options = QgsVectorFileWriter.SaveVectorOptions() > > self.options.driverName = 'GPKG' > > self.options.onlySelectedFeatures = True > > self.options.layerName = 'parcelles' > > > > for dir in dirs: > > print(dir) > > > > if os.path.isdir(dir): > > db_GPKG = os.path.join(dir, 'MAEC2023.gpkg') > > if os.path.exists(db_GPKG): > > gpkg_layer = db_GPKG + "|layername=parcelles" > > RPG_layer = QgsVectorLayer(gpkg_layer, "RPG", "ogr") > > > > expr = (' "fk_mesure" is not null ') > > *#expr = ('"fk_mesure" = \'{}\'').format('MAEC > Papillons')* > > > > RPG_layer.selectByExpression(expr) > > selected_feature = RPG_layer.selectedFeatures() > > print(len(selected_feature)) > > if os.path.exists(self.db_GPKG): *# if the ouput file > already exist* > > self.options.actionOnExistingFile = > QgsVectorFileWriter.CreateOrOverwriteLayer > > *#self.options.actionOnExistingFile = > QgsVectorFileWriter.AppendToLayerNoNewFields* > > *#self.options.actionOnExistingFile = > QgsVectorFileWriter.AppendToLayerAddFields * > > self.options.EditionCapability = > QgsVectorFileWriter.CanAppendToExistingLayer > > else: > > self.options.actionOnExistingFile = > QgsVectorFileWriter.CreateOrOverwriteFile > > > > write_result, error_message = > QgsVectorFileWriter.writeAsVectorFormatV2(RPG_layer, self.db_GPKG , self. > context, self.options) > > > > > > > > Thanks > > > > > > Sylvain PIERRE > > Chef de projet système d’information > > Direction des Systèmes d’Information et du Développement Numérique > > Service Projets et Ingénierie Numérique > > *Collectivité européenne d’Alsace* > > Tél : 03 88 76 68 88 > > sylvain.pie...@alsace.eu > > www.alsace.eu > > [image: facebook] <http://www.facebook.com/toutelalsace> [image: twitter] > <http://www.twitter.com/toutelalsace> [image: insta] > <http://www.instagram.com/toutelalsace> > > > _______________________________________________ > 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 > -- ----------- |\__ (:>__)( |/ Soluciones Geoinformáticas Libres http://geotux.tuxfamily.org/ https://twitter.com/GeoTux2 <http://twitter.com/GeoTux2> <http://gis.stackexchange.com/users/4972/germ%c3%a1n-carrillo>
_______________________________________________ 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