आपके द्वारा वांछित जानकारी प्राप्त करने के लिए, आपको QSettings
कक्षा का उपयोग करने की आवश्यकता है । यह विंडोज़ रजिस्ट्री की तरह एक पदानुक्रमित संरचना का उपयोग करता है। यदि आपके पास QGIS का नवीनतम संस्करण है, तो आप सेटिंग> विकल्प> उन्नत का उपयोग करके इस पदानुक्रम को देख सकते हैं
निम्नलिखित कोड पायथन कंसोल से काम करता है। मैंने इसे एक प्लगइन या QGIS के बाहर से नहीं आज़माया है, इसलिए इन मामलों में कुछ अतिरिक्त काम करने की आवश्यकता हो सकती है।
पदानुक्रम को देखने के लिए, 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 / कनेक्शन / के लिए फ़िल्टर करके डेटाबेस कनेक्शन विवरण प्राप्त कर सकते हैं
तो इस मामले में मेरे पास 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()
ध्यान दें कि पोर्ट एक स्ट्रिंग होना चाहिए, संख्या नहीं।