Чтобы получить необходимую информацию, вам нужно использовать QSettings
класс. При этом используется иерархическая структура, такая как реестр Windows. Если у вас последняя версия QGIS, вы можете увидеть эту иерархию, используя Настройки> Параметры> Дополнительно
Следующий код работает из консоли Python. Я не пробовал это из плагина или вне QGIS, поэтому в этих случаях может потребоваться дополнительная работа.
Чтобы увидеть иерархию, используйте это в консоли Python QGIS ...
from PyQt4.QtCore import QSettings
qs = QSettings()
for k in sorted(qs.allKeys())
print k
Вывод дает некоторые подсказки ...
.. snip ..
Plugins/searchPathsForPlugins
Plugins/valuetool/mouseClick
PostgreSQL/connections/GEODEMO/allowGeometrylessTables
PostgreSQL/connections/GEODEMO/database
PostgreSQL/connections/GEODEMO/dontResolveType
PostgreSQL/connections/GEODEMO/estimatedMetadata
.. snip ...
Таким образом, вы можете получить подробную информацию о подключении к базе данных, отфильтровывая префикс PostgreSQL / Connections /
Так что в этом случае у меня есть соединение под названием GEODEMO, я могу получить имя пользователя, например, так ...
from PyQt4.QtCore import QSettings
qs = QSettings()
print qs.value("PostgreSQL/connections/GEODEMO/username")
>> steven
Если у вас есть база данных, вы можете получить список таблиц, используя класс 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()
Обратите внимание, что порт должен быть строкой, а не числом.
Мой ответ будет почти таким же, как и предыдущий, но вы можете избежать зацикливания всех настроек и получать только соединения PostgreSQL с
источник