J'essaie de développer un plugin pour ajouter des couches postgis aux qgis à partir d'un plugin dans le cadre de l'apprentissage de python.
Le code pour ajouter une couche postgis est tiré du livre de recettes et fonctionne correctement si je l'exécute à partir de la console python dans qgis (si le bouton OK est enfoncé dans la boîte de dialogue, résultat == 1 et devrait ajouter ma couche à qgis).
Mais si je l'exécute à partir de mon plugin, il envoie le message NameError: le nom 'QgsDataSourceURI' n'est pas défini. Pourquoi ai-je cette erreur en l'exécutant à partir du plugin?
Y a-t-il une différence entre l'ajout d'une couche à partir d'un plugin / à l'intérieur d'une fonction et celle de la console 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")