Para obtener la información que desea, debe usar la QSettings
clase. Esto utiliza una estructura jerárquica, como el registro de Windows. Si tiene la última versión de QGIS, puede ver esta jerarquía usando Configuración> Opciones> Avanzado
El siguiente código funciona desde la Consola Python. No lo he intentado desde un complemento o fuera de QGIS, por lo que podría ser necesario algún trabajo adicional en estos casos.
Para ver la jerarquía, use esto en la consola QGIS python ...
from PyQt4.QtCore import QSettings
qs = QSettings()
for k in sorted(qs.allKeys())
print k
La salida da algunas pistas ...
.. snip ..
Plugins/searchPathsForPlugins
Plugins/valuetool/mouseClick
PostgreSQL/connections/GEODEMO/allowGeometrylessTables
PostgreSQL/connections/GEODEMO/database
PostgreSQL/connections/GEODEMO/dontResolveType
PostgreSQL/connections/GEODEMO/estimatedMetadata
.. snip ...
Para que pueda obtener detalles de la conexión de la base de datos filtrando el prefijo PostgreSQL / Connections /
Entonces, en este caso tengo una conexión llamada GEODEMO, puedo obtener el nombre de usuario así ...
from PyQt4.QtCore import QSettings
qs = QSettings()
print qs.value("PostgreSQL/connections/GEODEMO/username")
>> steven
Una vez que tenga una base de datos en mente, puede recuperar una lista de tablas utilizando la clase 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()
Tenga en cuenta que el puerto debe ser una cadena, no un número.
Mi respuesta será casi la misma que la anterior, pero puede evitar repetir todas las configuraciones y solo obtener conexiones PostgreSQL con
fuente