使用 QGIS 为 python 插件调用 QgsDataSourceUri
calling QgsDataSourceUri with QGIS for python plugin
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)
(代码是网上找的,以后会适配)
我的问题:当我尝试在 QGIS 的 Python 控制台上 运行 这段代码时,我立即收到错误消息
回溯(最近调用最后):
文件“”,第 1 行,位于
NameError: 名称 'QgsDataSourceUri' 未定义
即使我只 运行 导入和行 uri = QgsDataSourceUri(),我也会收到相同的错误消息。
我无法找到解决此问题的方法。
QGIS 安装有问题? python?错误的导入?
配置:
qgis 2.18.20
python3.6.5
如果有人知道如何解决这个问题,我将非常高兴。
谢谢,
埃尔万
您只是使用了错误的 class 名称。它应该是 uri = QgsDataSourceURI()
而不是 uri = QgsDataSourceUri()
因为你导入的是 QgsDataSourceURI
而不是 QgsDataSourceUri
QGIS 和 QT Python class 区分大小写。您可以查看 QGIS 2.18 related API.
确认确切的语法
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)
(代码是网上找的,以后会适配)
我的问题:当我尝试在 QGIS 的 Python 控制台上 运行 这段代码时,我立即收到错误消息
回溯(最近调用最后): 文件“”,第 1 行,位于 NameError: 名称 'QgsDataSourceUri' 未定义
即使我只 运行 导入和行 uri = QgsDataSourceUri(),我也会收到相同的错误消息。
我无法找到解决此问题的方法。
QGIS 安装有问题? python?错误的导入?
配置: qgis 2.18.20 python3.6.5
如果有人知道如何解决这个问题,我将非常高兴。
谢谢, 埃尔万
您只是使用了错误的 class 名称。它应该是 uri = QgsDataSourceURI()
而不是 uri = QgsDataSourceUri()
因为你导入的是 QgsDataSourceURI
而不是 QgsDataSourceUri
QGIS 和 QT Python class 区分大小写。您可以查看 QGIS 2.18 related API.
确认确切的语法