вызов QgsDataSourceUri с QGIS для плагина Python - PullRequest
0 голосов
/ 12 июня 2018

TLDR: используя QGIS, я пытаюсь разработать плагин Python для обновления базы данных.К сожалению, я сразу получаю сообщение об ошибке: Traceback (последний вызов был последним): файл "", строка 1, в NameError: имя 'QgsDataSourceUri' не определено

Более подробно:

Я работаю надQGIS2.18 разработать плагин для обновления некоторых данных, находящихся в базе данных postgres.для этого я хочу использовать такой код:

from qgis.core import *
from PyQt4.QtCore import *
from PyQt4.QtCore import QSettings
from PyQt4.QtCore import QSettings
from qgis.core import QgsVectorLayer, QgsDataSourceURI

uri = QgsDataSourceUri()

# set host name, port, database name, username and password
uri.setConnection(hote_IP, "5432", base_de_donnee, utilisateur,     mot_de_passe)
# set database schema, table name, geometry column and optionally
# subset (WHERE clause)
#uri.setDataSource("public", "roads", "the_geom", "cityid = 2643")

uri.setDataSource("", sql, "geom", "", "gid")
vlayer = QgsVectorLayer(uri.uri(), zapm, "postgres")
QgsMapLayerRegistry.instance().addMapLayer(vlayer)

(я получил код из сети, позже адаптирую его)

Моя проблема: когда я пытаюсьчтобы запустить этот код на консоли Python QGIS, я сразу получаю сообщение об ошибке

Traceback (последний вызов был последним): файл "", строка 1, в NameError: имя 'QgsDataSourceUri' не определено

, даже когда я только запускаю импорт и строку uri = QgsDataSourceUri () , я получаю то же сообщение об ошибке.

Я не смогузнать, как исправить эту проблему.

проблема установки QGIS?питона?плохой импорт?

Конфиг: qgis 2.18.20 python 3.6.5

Если у кого-то есть идеи, как решить эту проблему, я был бы очень рад.

Спасибо,Erwann

1 Ответ

0 голосов
/ 04 июля 2018

Вы просто используете неправильное имя класса.Это должно быть uri = QgsDataSourceURI() вместо uri = QgsDataSourceUri(), потому что вы импортировали QgsDataSourceURI, а не QgsDataSourceUri

Классы QGIS и QT Python чувствительны к регистру.Вы можете подтвердить точный синтаксис, глядя на API, связанный с QGIS 2.18 .

...