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.