es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

QGIS: ¿Cómo utilizar una conexión URI con el tipo de conexión pg_service.conf en QGIS 3.16?

Me gustaría abrir una tabla de PostgreSQL en QGIS 3.16 con pyQGIS.

He encontrado el método QgsDataSourceUri.setConnection para hacer esto.
El problema para mí es que la contraseña de la base de datos está escrita en texto claro.
Si pongo mi código en Github o FramaGit, por ejemplo… sería un grave fallo de seguridad.

Encontré el parámetro authConfigId, que me permite utilizar la base de datos de autenticación de QGIS.
Es mucho más seguro y es parte de la solución.

Este es mi código hasta ahora:

self.uri = QgsDataSourceURI()
self.uri.setConnection("192.168.x.xx", "port", "bdd", "user", "passwordIDontWantToGive")

O

 self.uri = QgsDataSourceURI()
 self.uri.setConnection("192.168.x.xx", "port", "bdd", authConfigId = 'xxx')

Pero mi conexión desde QGIS a la base de datos de postgreSQL se realiza con un archivo .pg_service.conf.
¿Sabes cómo gestionar un comando de conexión URI con ese tipo de conexión?

Gracias de antemano.

N.B.: Encontré esta manera de acceder a una tabla de postgreSQL con un archivo de servicio:

uri = QgsDataSourceUri()
if service:
    uri.setConnection(service, db, username, password, sslmode)

Pero parece que también requiere que la contraseña esté en texto claro en la línea de comandos…

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para abrir una tabla de PostgreSQL en QGIS 3.16 con pyQGIS, puedes utilizar el método QgsDataSourceUri.setConnection. Sin embargo, si almacenas la contraseña de la base de datos en texto claro, puede haber una falla de seguridad si tu código es compartido en plataformas públicas como Github o FramaGit. Para superar esta limitación, puedes utilizar el parámetro authConfigId, que facilita el uso de la base de datos de autenticación de QGIS y hace que tu código sea más seguro.

    Puedes utilizar el siguiente código para conectarte a la base de datos de PostgreSQL utilizando el archivo .pg_service.conf:

    uri = QgsDataSourceUri()
    uri.setConnection(service, db, username=username, password=password, sslmode=sslmode)
    

    Ten en cuenta que este enfoque también requiere que la contraseña se almacene en texto claro en la línea de comandos, lo cual no es ideal por razones de seguridad. Por lo tanto, se recomienda utilizar el parámetro authConfigId para garantizar una conexión segura y sin contraseña a tu base de datos de PostgreSQL desde QGIS con pyQGIS.

Comments are closed.