python - PyQGIS - 从 PostGis 数据库添加图层并在 QGIS 界面中使用它
问题描述
我尝试从我的数据库 postgis 添加到我的 QGIS 接口一个表,我正在使用具有良好参数的脚本。但我的问题是当我运行我的函数时,我的 QGIS 错误并关闭。
from qgis.core import *
from qgis.core import QgsProject
from PyQt5.QtCore import QFileInfo
from qgis.core import QgsVectorLayer, QgsDataSourceUri
from qgis.utils import *
def run_script(iface):
uri = QgsDataSourceUri()
uri.setConnection("localhost", "5432", "Base_test", "user", "passeword")
uri.setDataSource("public", "BPE", "geom")
layer = QgsVectorLayer(uri.uri(), "bpe", "user")
if not layer.isValide():
print("Layer %s did not load" %layer.name())
QgsProject.instance().addMapLayer(layer)
它说我该层没有加载。之后需要重新启动 QGIS。
有人能帮助我吗。
我正在使用 QGIS 3.10
解决方案
试试这个代码:
from qgis.core import *
from qgis.core import QgsProject
from PyQt5.QtCore import QFileInfo
from qgis.core import QgsVectorLayer,
QgsDataSourceUri
from qgis.utils import *
def run_script(iface):
uri = QgsDataSourceUri()
uri.setConnection("localhost", "5432", "Base_test",
"user", "passeword")
uri.setDataSource("public", "BPE", "geom")
layer = QgsVectorLayer(uri.uri(), "bpe", "postgres")
if not layer.isValid():
print("Layer %s did not load" %layer.name())
QgsProject.instance().addMapLayer(layer)
run_script()
- 你犯了一个拼写错误:
if not layer.isValide()
-->if notlayer.isValid()
- 您需要指定提供者(在这种情况下为 postgres)
layer = QgsVectorLayer(uri.uri(), "bpe", "user")
-->layer=QgsVectorLayer(uri.uri(), "bpe", "postgres")
- 运行/调用函数(你刚刚定义了它):
run_script()
检查文档:https ://qgis.org/pyqgis/3.0/core/Vector/QgsVectorLayer.html
干杯
推荐阅读
- android - 如何将 onClickListener 添加到 Kotlin 中的 recyclerView 的项目中?
- angular - 由于规则上没有 Auth 对象,Firebase 存储/Firestore 未经授权
- python - 找不到 Flask 404 ( 33mGET / HTTP/1.1 [0m" 404 - )
- python - 将字典值转换为单独的变量?Python
- mysql - LOAD DATA LOCAL INFILE 卡住了
- amazon-dynamodb - 在 dynamo DB 中使用二进制属性进行 GSI 索引是个好主意吗?
- javascript - 正则表达式数据值 Javascript 空白
- python - menu not showing up with tkinter in notebook
- python - power automatic、power bi、python 或其他自动化方式来提取给定 azure Active Directory upn 的全名
- mysql - INSERT into Mysql table from table2, comparing variables in both tables