Per ottenere le informazioni desiderate, è necessario utilizzare la QSettings
classe. Questo utilizza una struttura gerarchica, come il registro di Windows. Se hai l'ultima versione di QGIS, puoi vedere questa gerarchia usando Impostazioni> Opzioni> Avanzate
Il codice seguente funziona dalla console Python. Non ho provato questo da un plugin o al di fuori di QGIS, quindi in questi casi potrebbe essere necessario un lavoro aggiuntivo.
Per vedere la gerarchia, usalo nella console di Python di QGIS ...
from PyQt4.QtCore import QSettings
qs = QSettings()
for k in sorted(qs.allKeys())
print k
L'output fornisce alcuni suggerimenti ...
.. snip ..
Plugins/searchPathsForPlugins
Plugins/valuetool/mouseClick
PostgreSQL/connections/GEODEMO/allowGeometrylessTables
PostgreSQL/connections/GEODEMO/database
PostgreSQL/connections/GEODEMO/dontResolveType
PostgreSQL/connections/GEODEMO/estimatedMetadata
.. snip ...
Quindi puoi ottenere i dettagli della connessione al database filtrando il prefisso PostgreSQL / Connections /
Quindi in questo caso ho una connessione chiamata GEODEMO, posso ottenere lo username in questo modo ...
from PyQt4.QtCore import QSettings
qs = QSettings()
print qs.value("PostgreSQL/connections/GEODEMO/username")
>> steven
Una volta che hai in mente un database, puoi recuperare un elenco di tabelle usando la classe PostGisDBConnector .
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()
Nota che la porta dovrebbe essere una stringa, non un numero.