Aby uzyskać potrzebne informacje, musisz skorzystać z QSettings
klasy. Używa to hierarchicznej struktury, takiej jak rejestr systemu Windows. Jeśli masz najnowszą wersję QGIS, możesz zobaczyć tę hierarchię, wybierając Ustawienia> Opcje> Zaawansowane
Poniższy kod działa z konsoli Python. Nie próbowałem tego z wtyczki ani poza QGIS, więc w takich przypadkach może być wymagana dodatkowa praca.
Aby zobaczyć hierarchię, użyj tego w konsoli Pythona QGIS ...
from PyQt4.QtCore import QSettings
qs = QSettings()
for k in sorted(qs.allKeys())
print k
Dane wyjściowe zawierają kilka wskazówek ...
.. snip ..
Plugins/searchPathsForPlugins
Plugins/valuetool/mouseClick
PostgreSQL/connections/GEODEMO/allowGeometrylessTables
PostgreSQL/connections/GEODEMO/database
PostgreSQL/connections/GEODEMO/dontResolveType
PostgreSQL/connections/GEODEMO/estimatedMetadata
.. snip ...
Aby uzyskać szczegółowe informacje o połączeniu z bazą danych, filtruj przedrostek PostgreSQL / Connections /
Więc w tym przypadku mam połączenie o nazwie GEODEMO, mogę uzyskać nazwę użytkownika tak ...
from PyQt4.QtCore import QSettings
qs = QSettings()
print qs.value("PostgreSQL/connections/GEODEMO/username")
>> steven
Gdy masz już na myśli bazę danych, możesz pobrać listę tabel za pomocą klasy 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()
Pamiętaj, że port powinien być ciągiem, a nie liczbą.
Moja odpowiedź będzie prawie taka sama jak poprzednia, ale można uniknąć zapętlenia wszystkich ustawień i uzyskania tylko połączeń PostgreSQL z
źródło