Para obter as informações desejadas, você precisa usar a QSettings
classe Isso usa uma estrutura hierárquica, como o registro do Windows. Se você possui a versão mais recente do QGIS, pode ver essa hierarquia usando Configurações> Opções> Avançado
O código a seguir funciona no console Python. Eu não tentei isso em um plug-in ou fora do QGIS, portanto, alguns trabalhos adicionais podem ser necessários nesses casos.
Para ver a hierarquia, use isso no console python do QGIS ...
from PyQt4.QtCore import QSettings
qs = QSettings()
for k in sorted(qs.allKeys())
print k
A saída dá algumas dicas ...
.. snip ..
Plugins/searchPathsForPlugins
Plugins/valuetool/mouseClick
PostgreSQL/connections/GEODEMO/allowGeometrylessTables
PostgreSQL/connections/GEODEMO/database
PostgreSQL/connections/GEODEMO/dontResolveType
PostgreSQL/connections/GEODEMO/estimatedMetadata
.. snip ...
Para obter detalhes da conexão com o banco de dados, filtre o prefixo PostgreSQL / Connections /
Portanto, neste caso, eu tenho uma conexão chamada GEODEMO, posso obter o nome de usuário assim ...
from PyQt4.QtCore import QSettings
qs = QSettings()
print qs.value("PostgreSQL/connections/GEODEMO/username")
>> steven
Depois de ter um banco de dados em mente, você pode recuperar uma lista de tabelas usando a 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()
Observe que a porta deve ser uma sequência, não um número.
Minha resposta será quase a mesma que a anterior, mas você pode evitar fazer um loop em todas as configurações e obter apenas as conexões do PostgreSQL com
fonte