Um die gewünschten Informationen zu erhalten, müssen Sie die QSettings
Klasse verwenden. Dies verwendet eine hierarchische Struktur wie die Windows-Registrierung. Wenn Sie über die neueste Version von QGIS verfügen, können Sie diese Hierarchie über Einstellungen> Optionen> Erweitert anzeigen
Der folgende Code funktioniert über die Python-Konsole. Ich habe dies nicht über ein Plugin oder außerhalb von QGIS versucht, daher sind in diesen Fällen möglicherweise zusätzliche Arbeiten erforderlich.
Verwenden Sie diese Option in der QGIS-Python-Konsole, um die Hierarchie anzuzeigen ...
from PyQt4.QtCore import QSettings
qs = QSettings()
for k in sorted(qs.allKeys())
print k
Die Ausgabe gibt einige Hinweise ...
.. snip ..
Plugins/searchPathsForPlugins
Plugins/valuetool/mouseClick
PostgreSQL/connections/GEODEMO/allowGeometrylessTables
PostgreSQL/connections/GEODEMO/database
PostgreSQL/connections/GEODEMO/dontResolveType
PostgreSQL/connections/GEODEMO/estimatedMetadata
.. snip ...
Sie können also Datenbankverbindungsdetails abrufen, indem Sie nach dem Präfix PostgreSQL / Connections / filtern
In diesem Fall habe ich eine Verbindung namens GEODEMO, ich kann den Benutzernamen so bekommen ...
from PyQt4.QtCore import QSettings
qs = QSettings()
print qs.value("PostgreSQL/connections/GEODEMO/username")
>> steven
Sobald Sie eine Datenbank im Auge haben, können Sie mithilfe der PostGisDBConnector-Klasse eine Liste von Tabellen abrufen .
import db_manager.db_plugins.postgis.connector as con
from qgis.core import QgsDataSourceURI
uri = QgsDataSourceURI()
uri.setConnection("127.0.0.1", "5432", "database_name", "username", "password")
c = con.PostGisDBConnector(uri)
print c
print c.getTables()
Beachten Sie, dass der Port eine Zeichenfolge und keine Zahl sein sollte.
Meine Antwort ist fast dieselbe wie die vorherige, aber Sie können vermeiden, alle Einstellungen zu wiederholen und nur PostgreSQL-Verbindungen mit zu erhalten
quelle