4 votos

Cómo obtener el Usuario y la Contraseña de una capa PostGIS de PyQGIS

Me pregunto si es posible obtener el usuario y la contraseña de una base de datos PostGIS si están almacenados en la PostGis la información de conexión.

Puedo obtener la información de conexión en el momento de la capa activa como esta:

connInfo = QgsDataSourceURI(layer.dataProvider().dataSourceUri()).connectionInfo()
print connInfo
dbname='test_geodata_project' host=10.0.4.111 port=5432 sslmode=disable

userInfo = QgsCredentials.instance().get(connInfo, None, None)
print userInfo
(True, u'testuser', 'test')

Pero el usuario tiene que escribir en el usuario/contraseña de forma manual. Hay algo como el connectionInfo() pero con usuario/contraseña?

3voto

Elliott Maynard Puntos 11

Sí, puede hacerlo, pero sólo si elige guardar el usuario y la contraseña mientras se establece la conexión a PostGIS.

enter image description here

Si usted así lo hizo y su capa activa es una capa PostGIS, puede acceder a la información de la conexión de esta manera:

layer = iface.activeLayer()
source = layer.source()
print source

Usted obtendrá una clave de cadena de valor como este:

dbname='mydb' host=localhost port=5432 user='myuser' password='mypassword' sslmode=disable key='gid' srid=4326 type=MULTIPOLYGON table="public"."mytable" (geographicextent) sql=

A partir de la cual se puede obtener la contraseña de esta manera:

kvp = source.split(" ")
for kv in kvp:
    if kv.startswith("password"):
        thePassword = kv.split("=")[1][1:-1]
        print thePassword

Incluyen una similar if por el usuario en el for de bucle y listo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X