I am attempting to create a QgsVectorLayer with the same code as I am using for a PostgreSQL table, which works correctly and the isValid() method on the layer returns true
.
uri=QgsDataSourceUri()
uri.setConnection("localhost","5433","xxx","postgres","xxx",QgsDataSourceUri.SslDisable)
uri.setDataSource("xxx","sv_demog","geom","id")
uri.setSrid("4269")
vlayer=QgsVectorLayer(uri.uri(),"xxxx","postgres")
print('sv_demog layer is valid: %s' % (vlayer.isValid()))
The view selects from table where id is the primary key, and has a geometry column.
How do I make this work for a view?
I am using a PostgreSQL 10 database, and QGIS 3 (Update: Same behavior in 2.18).
Ref: Loading Layers