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 2
QgsDataSourceURI.setDataSource() has an additional fifth argument to specify the key column.
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.
Explore related questions
See similar questions with these tags.