Provo a sviluppare un plugin per aggiungere livelli postgis a qgis da un plugin come parte dell'apprendimento di Python.
Il codice per aggiungere un livello Postgis è preso dal ricettario e funziona benissimo se lo eseguo dalla console Python in qgis (Se il pulsante OK viene premuto nella finestra di dialogo risultato == 1 e dovrei aggiungere il mio livello a qgis).
Ma se lo eseguo dal mio plugin genera il messaggio NameError: il nome 'QgsDataSourceURI' non è definito. Perché ottengo quell'errore eseguendolo dal plugin?
C'è una differenza nel modo in cui aggiungo un layer da un plugin / all'interno di una funzione rispetto alla console di Python?
def run(self):
"""Run method that performs all the real work"""
# show the dialog
self.dlg.show()
# Run the dialog event loop
result = self.dlg.exec_()
# See if OK was pressed
if result == 1:
# Do something useful here - delete the line containing pass and
# substitute with your code.
uri = QgsDataSourceURI()
uri.setConnection("localhost", "5432", "test", "postgres", "postgres")
#set database schema, table name, geometry column and optionaly subset(WHERE clause)
uri.setDataSource ("basic", "cities", "geom")
# Defining the layer name and layer type for QGIS?
vlayer=QgsVectorLayer (uri .uri() ,"cities","postgres")