Untuk mendapatkan informasi yang Anda inginkan, Anda perlu menggunakan QSettings
kelas. Ini menggunakan struktur hierarkis, seperti registri Windows. Jika Anda memiliki versi terbaru QGIS, Anda dapat melihat hierarki ini menggunakan Pengaturan> Opsi> Tingkat Lanjut
Kode berikut berfungsi dari Konsol Python. Saya belum mencoba ini dari plugin atau di luar QGIS, jadi beberapa pekerjaan tambahan mungkin diperlukan dalam kasus ini.
Untuk melihat hierarki, gunakan ini di konsol python QGIS ...
from PyQt4.QtCore import QSettings
qs = QSettings()
for k in sorted(qs.allKeys())
print k
Outputnya memberikan beberapa petunjuk ...
.. snip ..
Plugins/searchPathsForPlugins
Plugins/valuetool/mouseClick
PostgreSQL/connections/GEODEMO/allowGeometrylessTables
PostgreSQL/connections/GEODEMO/database
PostgreSQL/connections/GEODEMO/dontResolveType
PostgreSQL/connections/GEODEMO/estimatedMetadata
.. snip ...
Jadi Anda bisa mendapatkan detail koneksi database dengan memfilter untuk awalan PostgreSQL / Connections /
Jadi dalam hal ini saya memiliki koneksi bernama GEODEMO, saya bisa mendapatkan nama pengguna seperti itu ...
from PyQt4.QtCore import QSettings
qs = QSettings()
print qs.value("PostgreSQL/connections/GEODEMO/username")
>> steven
Setelah Anda memiliki basis data, Anda dapat mengambil daftar tabel menggunakan kelas 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()
Perhatikan bahwa port harus berupa string, bukan angka.
Jawaban saya akan hampir sama dengan yang sebelumnya tetapi Anda dapat menghindari untuk mengulang semua pengaturan dan hanya memperoleh koneksi PostgreSQL dengan
sumber