답변:
원하는 정보를 얻으려면 QSettings
수업 을 사용해야합니다 . 이것은 Windows 레지스트리와 같은 계층 구조를 사용합니다. 최신 버전의 QGIS가있는 경우 설정> 옵션> 고급을 사용하여이 계층 구조를 볼 수 있습니다
다음 코드는 Python 콘솔에서 작동합니다. 플러그인이나 QGIS 외부에서 시도하지 않았으므로 이러한 경우 추가 작업이 필요할 수 있습니다.
계층 구조를 보려면 QGIS python 콘솔에서 이것을 사용하십시오.
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 연결 만 얻을 수 있습니다
from PyQt4.QtCore import QSettings
s = QSettings()
s.beginGroup("PostgreSQL/connections")
print s.allKeys()
print s.value("GEODEMO/username")
s.endGroup()