TLDR:使用QGIS,我试图开发一个python插件来更新数据库。不幸的是我立刻得到了一个错误:Traceback(最近一次调用最后一次): 文件"",第1行,in 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控制台上运行此代码时,我立即得到错误
Traceback(最近一次调用最后一次): 文件"",第1行,in NameError:name' QgsDataSourceUri'未定义
即使我只运行导入和行 uri = QgsDataSourceUri(),我也会收到相同的错误消息。
我无法找到解决此问题的方法。
安装QGIS的问题?蟒蛇?糟糕的进口?
配置: qgis 2.18.20 python 3.6.5
如果有人知道如何解决这个问题,我会很高兴。
谢谢, 艾万
答案 0 :(得分:0)
您只是使用了错误的类名。应该是function glowText(element) {
element.className += ' glow';
element.addEventListener('animationend', function() {
this.classList.remove('glow');
});
}
var myInput = document.getElementById('myInput');
var myOutput = document.getElementById('myOutput')
myInput.addEventListener('input', function() {
myOutput.textContent = myInput.value*2;
glowText(myOutput);
})
而不是uri = QgsDataSourceURI()
,因为您已经导入了uri = QgsDataSourceUri()
而不是QgsDataSourceURI
QGIS和QT Python类区分大小写。您可以查看QGIS 2.18 related API来确认确切的语法。