[Qgis-user] Storing and Retrieving Vector Layers with Styles to Postgres DB

Jorge Gustavo Rocha jgr at geomaster.pt
Tue Apr 8 01:54:06 PDT 2025


Hi,

This is the code I use (since some years ago...) to write styles from 
all layers to the database:

mapGeometryType = {
0: "Point",
1: "Line",
2: "Polygon",
3: "UnknownGeometry",
4: "NullGeometry",
}
layers = QgsProject.instance().mapLayers()
forlayer inlayers.values():
iflayer.type() == QgsMapLayer.VectorLayer:
ifmapGeometryType[layer.geometryType()] != "NullGeometry":
layer.deleteStyleFromDatabase
layer.saveStyleToDatabase(name=layer.name(),description="Default style 
for {}".format(layer.name()), useAsDefault=True, uiFileContent="")

Since we are writing all with the flag "default style" there is no need 
to load them when opening the project.

Regards,

Jorge Gustavo

On 07/04/25 19:11, Ludwig Kniprath via QGIS-User wrote:
>
> Hello Peter,
>
> everything that users do in QGis can be done by Python scripts, 
> including your steps listed below.
>
> There are some difficulties for the desired "one step" solution, f. e. 
> the name of the file-based layer must be converted in a valid and 
> unique postgis table-name, the fields of the file-based layer must be 
> stored with valid postgis field-types and -names and so on...
>
> Taking into account all special features, exceptions and necessary 
> settings, this results in a rather complex program, the implementation 
> of which may be more complex than the manual implementation in QGis...
>
> Just my two cents...
>
> Ludwig
>
>
> Am 07.04.25 um 08:45 schrieb peter.berger--- via QGIS-User:
>>
>> There are serveral steps necessary to store from QGIS a vector layer 
>> with his style in a postgres DB. For a big amout of layers this is 
>> impracticaI.
>>
>> Therfore I would do this in one step from QGIS. Is this in any way 
>> possible?
>>
>> *Peter Berger*
>>
>> Brunnwiesenstrasse 62
>>
>> 8049 Zürich
>>
>> Schweiz
>>
>> mobile +41 79 301 71 54
>>
>> The several step procedure:
>>
>> ·*Load the layer*: Import the layer from a vector file into QGIS.
>>
>> ·*Rename (if necessary)*: Give the layer an appropriate name.
>>
>> · *Transfer the layer to Postgres*: Drag the layer into the 
>> PostgreSQL database. You will find it there with the specific name.
>>
>> · *Load the layer from Postgres*: Import it back from the PostgreSQL 
>> database into QGIS.
>>
>> · *Assign the style*: Copy the style from the original layer and 
>> assign it to the Postgres layer loaded in QGIS.
>>
>> · *Export the style*: Export the style of the Postgres layer. You 
>> will now find an option to save the style with the exact name of the 
>> layer in the PostgreSQL database.
>>
>> · *Delete old layers and reload*: Delete all associated layers and 
>> reload the layer from the PostgreSQL database.
>>
>>
>> _______________________________________________
>> QGIS-User mailing list
>> QGIS-User at lists.osgeo.org
>> List info:https://lists.osgeo.org/mailman/listinfo/qgis-user
>> Unsubscribe:https://lists.osgeo.org/mailman/listinfo/qgis-user
>
> _______________________________________________
> QGIS-User mailing list
> QGIS-User at lists.osgeo.org
> List info:https://lists.osgeo.org/mailman/listinfo/qgis-user
> Unsubscribe:https://lists.osgeo.org/mailman/listinfo/qgis-user
-- 
*Geomaster, LDA *
*VENHA DESCOBRIR O CAMINHO DO OPEN SOURCE CONNOSC *

Rua Afonso Palmeira, 31, 7 D
4715-278 Braga
VAT/NIF 510 906 109
Phone  +351 253 257 173
Site geomaster.pt <http://geomaster.pt>
GPS 41.54627, -8.40432
Logo 	
------------------------------------------------------------------------
	
Jorge Gustavo Rocha
CTO

Mobile   +351 910 333 888
Email jgr at geomaster.pt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20250408/4e701527/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cropped-geomaster300x300-1.png
Type: image/png
Size: 33896 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20250408/4e701527/attachment-0001.png>


More information about the QGIS-User mailing list