This is one example of missing functionality in QGIS API v2 that [has been incorporated][1] (by Even Rouault) into [v3](http://www.qgis.org/api/classQgsVectorFileWriter.html).


----------


Possible workarounds for QGIS v2:

1.
--

I use this solution in QGIS v2.14.8 for a company: run the Processing algorithm *Convert Format* from GDAL/OGR (you need to comment or remove [these two lines](https://github.com/qgis/QGIS/blob/release-2_14/python/plugins/processing/algs/gdal/ogr2ogr.py#L130-L131) in `/usr/share/qgis/python/plugins/processing/algs/gdal/ogr2ogr.py` for this solution to work):

    res = processing.runalg( "gdalogr:convertformat",
            vLayer,
            3, #SQLite
            "-lco GEOMETRY_NAME=geom -update", # Creation options
            existingDBPath # Path to existing .sqlite file
          )

Because of some flaws in Processing, this solution works for PostgreSQL/PostGIS layers (enough for the company I work for), but it does not work for Shapefiles nor Memory layers. I wanted to fix this in [#3644][2] but unfortunately it was never merged.

2.
--

Use the [ogr2ogr port to Python][3] (in the example I convert from PostGIS layer to SpatiaLite):

    from ogr2ogr import *
    main( [ "",
            "-f",
            "SQLite",
            "-lco",
            "GEOMETRY_NAME=geom",
            "-update",
            existingDBPath, # Path to existing .sqlite file
            "PG:{}".format( dataSourceURI.connectionInfo() ), # Connection string
            "{}.{}".format( dataSourceURI.schema(), dataSourceURI.table() ) # Tablename
          ]
       )


3.
--

Save your layers in temporary files (e.g., Shapefiles) and directly run the ogr2ogr command:

    ogr2ogr -f SQLite -update myExistingDB.sqlite /docs/geodata/rivers.shp rivers 


  [1]: https://github.com/qgis/QGIS/pull/3597
  [2]: https://github.com/qgis/QGIS/pull/3644
  [3]: http://svn.osgeo.org/gdal/trunk/gdal/swig/python/samples/ogr2ogr.py