Mehr

Fehler beim Verbinden von qgis mit postgres?


sql="select long,lat from poidata.poi_ca from where city LIKE '%unnyvale'" uri = QgsDataSourceURI() uri.setConnection("localhost","5432","gis_data","postgres","vajja") uri .setDataSource("",sql,"long","","lat") vlayer =QgsVectorLayer(uri.uri(),"LayerName","postgres") QgsMapLayerRegistry.instance().addMapLayer(vlayer)

Fehler: Auf die Relation "select long,lat from poidata.poi_ca from where city LIKE '%unnyvale'" kann nicht zugegriffen werden. Die Fehlermeldung aus der Datenbank war: ERROR: relation "select long,lat from poidata.poi_ca from where city LIKE '%unny" existiert nicht LINE 1: SELECT * FROM "select long,lat from poidata.poi_ca from where… ^ . SQL: SELECT * FROM "select long,lat from poidata.poi_ca from where city LIKE '%unnyvale'"

Quellen:

Ich habe beides aus einer anderen Quelle versucht, aber ich erhalte immer noch einen Fehler


Diese Zeile ist das Problem

uri.setDataSource("",sql,"long","","lat")

Die Fehlermeldung, die Sie erhalten, besagt, dass die Tabelle "select long,lat from…" nicht existiert. Der Grund dafür ist, dass Sie das SQL als zweiten Parameter übergeben; Dies sollte stattdessen der Tabellenname sein.

Aus der API-Dokumentation sollten die Parameter in dieser Reihenfolge sein…

QgsDataSourceURI.setDataSource(Schema, Tabelle, GeometryColumn, Sql, keyColumn)

Es kann sein, dass der erste von Ihnen gepostete Link veraltet ist. In 2.0 wurden API-Änderungen vorgenommen, dies könnte eine davon sein. Der zweite Link (die offizielle Dokumentation) ist aktuell.


Schau das Video: Pyarchinit - Python, Qgis e PostgreSQL per larcheologia (Oktober 2021).