TLDR :使用QGIS,我试图开发一个python插件来更新数据库。不幸的是,我立即收到了一个错误: Traceback (最近一次调用):File "",第1行,在NameError: name '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: name 'QgsDataSourceUri‘中未定义
即使我只运行导入和uri = QgsDataSourceUri()行时,也会收到相同的错误消息。
我一直未能找出如何纠正这一问题。
QGIS的安装问题?蟒蛇的?进口不良?
配置: qgis 2.18.20 python 3.6.5
如果有人想办法解决这个问题,我会很高兴的。
谢谢你,埃尔旺
发布于 2018-07-04 01:48:08
您只是使用了错误的类名。它应该是uri = QgsDataSourceURI()而不是uri = QgsDataSourceUri(),因为您已经导入了QgsDataSourceURI而不是QgsDataSourceUri
QGIS和QT类区分大小写.您可以确认QGIS 2.18相关API的确切语法。
https://stackoverflow.com/questions/50812456
复制相似问题