TransWikia.com

How to load a postgres view using pyQgis?

Geographic Information Systems Asked on November 29, 2020

Under Qgis 1.8 on Windows 7 I have this problem with my pyArchInit plugin: I need to load on the map canvas my geometries from a postgis layer. Till the 1.7.4 version I use the method explained on the tutorial.

But I have to load also some potgres view, and Qgis 1.8 need to know the column that I would like to use as ID.

How can I pass this value with pyQgis and restore my plugin?

uri = QgsDataSourceURI()
# set host name, port, database name, username and password
uri.setConnection("localhost", "5432", "dbname", "johny", "xxx")
# set database schema, table name, geometry column and optionaly subset (WHERE clause)
uri.setDataSource("public", "roads", "the_geom", "cityid = 2643")

vlayer = QgsVectorLayer(uri.uri(), "layer_name_you_like", "postgres")

2 Answers

QgsDataSourceURI.setDataSource() has an additional fifth argument to specify the key column.

Answered by jef on November 29, 2020

An update and an explicit example to complete @jef's answer :

uri = QgsDataSourceUri()
uri.setConnection("localhost", "5432", "myDatabase", "myUser", "myPassword")
uri.setDataSource("mySchema", "myTable", "myGeomField", aKeyColumn="myUniqueIdField")
vlayer = iface.addVectorLayer(uri.uri(False), "nameOfMyLayer", "postgres")

Adapt it with your database settings.

Source

Answered by GeoGyro on November 29, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP