• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python core.QgsCredentials类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中qgis.core.QgsCredentials的典型用法代码示例。如果您正苦于以下问题:Python QgsCredentials类的具体用法?Python QgsCredentials怎么用?Python QgsCredentials使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了QgsCredentials类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: ogrConnectionString

    def ogrConnectionString(self, uri):
        ogrstr = None

        layer = dataobjects.getObjectFromUri(uri, False)
        if layer is None:
            return uri
        provider = layer.dataProvider().name()
        if provider == 'spatialite':
            # dbname='/geodata/osm_ch.sqlite' table="places" (Geometry) sql=
            regex = re.compile("dbname='(.+)'")
            r = regex.search(unicode(layer.source()))
            ogrstr = r.groups()[0]
        elif provider == 'postgres':
            # dbname='ktryjh_iuuqef' host=spacialdb.com port=9999
            # user='ktryjh_iuuqef' password='xyqwer' sslmode=disable
            # key='gid' estimatedmetadata=true srid=4326 type=MULTIPOLYGON
            # table="t4" (geom) sql=
            dsUri = QgsDataSourceURI(layer.dataProvider().dataSourceUri())
            connInfo = dsUri.connectionInfo()
            (success, user, passwd ) = QgsCredentials.instance().get(connInfo, None, None)
            if success:
                QgsCredentials.instance().put(connInfo, user, passwd)
            ogrstr = ("PG:dbname='%s' host='%s' port='%s' user='%s' password='%s'"
                      % (dsUri.database(), dsUri.host(), dsUri.port(), user, passwd))
        else:
            ogrstr = unicode(layer.source()).split("|")[0]
        return '"' + ogrstr + '"'
开发者ID:Ariki,项目名称:QGIS,代码行数:27,代码来源:OgrAlgorithm.py


示例2: __init__

    def __init__(self, uri):
        DBConnector.__init__(self, uri)

        self.host = uri.host() or os.environ.get("PGHOST")
        self.port = uri.port() or os.environ.get("PGPORT")

        username = uri.username() or os.environ.get("PGUSER") or os.environ.get("USER")
        password = uri.password() or os.environ.get("PGPASSWORD")

        try:
            self.connection = psycopg2.connect(self._connectionInfo().encode("utf-8"))
        except self.connection_error_types(), e:
            err = str(e)
            uri = self.uri()
            conninfo = uri.connectionInfo()

            for i in range(3):
                (ok, username, password) = QgsCredentials.instance().get(conninfo, username, password, err)
                if not ok:
                    raise ConnectionError(e)

                if username:
                    uri.setUsername(username)

                if password:
                    uri.setPassword(password)

                try:
                    self.connection = psycopg2.connect(uri.connectionInfo().encode("utf-8"))
                    QgsCredentials.instance().put(conninfo, username, password)
                except self.connection_error_types(), e:
                    if i == 2:
                        raise ConnectionError(e)

                    err = str(e)
开发者ID:olivierdalang,项目名称:QGIS,代码行数:35,代码来源:connector.py


示例3: connectDatabaseWithQSettings

 def connectDatabaseWithQSettings(self, name):
     (host, port, database, user, password) = self.getConnectionFromQSettings(name)
     self.db.setHostName(host)
     if type(port) != 'int':
         self.db.setPort(int(port))
     else:
         self.db.setPort(port)
     self.db.setDatabaseName(database)
     self.db.setUserName(user)
     if not password or password == '':
         conInfo = 'host='+host+' port='+port+' dbname='+database
         check = False
         while not check:
             try:
                 (success, user, password) = QgsCredentials.instance().get(conInfo, user, None)
                 if not success:
                     return 
                 self.db.setPassword(password)
                 check = True
                 self.checkAndOpenDb()
                 QgsCredentials.instance().put(conInfo, user, password)
             except:
                 pass
     else:
         self.db.setPassword(password)
开发者ID:alexdsz,项目名称:DsgTools,代码行数:25,代码来源:postgisDb.py


示例4: saveToPostGIS

    def saveToPostGIS(self):
        dlg = PostgisTableSelector(self, self.parameter.name().lower())
        dlg.exec_()
        if dlg.connection:
            self.use_temporary = False
            settings = QgsSettings()
            mySettings = '/PostgreSQL/connections/' + dlg.connection
            dbname = settings.value(mySettings + '/database')
            user = settings.value(mySettings + '/username')
            host = settings.value(mySettings + '/host')
            port = settings.value(mySettings + '/port')
            password = settings.value(mySettings + '/password')
            uri = QgsDataSourceUri()
            uri.setConnection(host, str(port), dbname, user, password)
            uri.setDataSource(dlg.schema, dlg.table,
                              "the_geom" if isinstance(self.parameter, QgsProcessingParameterFeatureSink) and self.parameter.hasGeometry() else None)

            connInfo = uri.connectionInfo()
            (success, user, passwd) = QgsCredentials.instance().get(connInfo, None, None)
            if success:
                QgsCredentials.instance().put(connInfo, user, passwd)
            self.leText.setText("postgis:" + uri.uri())

            self.skipOutputChanged.emit(False)
            self.destinationChanged.emit()
开发者ID:lbartoletti,项目名称:QGIS,代码行数:25,代码来源:DestinationSelectionPanel.py


示例5: pg_conn_info

    def pg_conn_info(self):
        """returns current postgis versionned DB connection info
        request credentials if needed"""
        if not self._pg_conn_info:
            # In the simple case: all pg layers share the same conn info
            # we set the conn info, if not, we ask for a connection
            # We then request credentials if necessary

            conn_info = ""
            for layer in self.iface.legendInterface().layers():
                if layer.providerType() == "postgres":
                    cni = QgsDataSourceURI(layer.source()).connectionInfo()
                    if not conn_info:
                        conn_info = cni
                    elif conn_info != cni:
                        conn_info = "heterogeneous"
            if conn_info == "heterogeneous":
                assert False  # TODO request connection

            uri = QgsDataSourceURI(conn_info)
            conn = None
            try:
                conn = psycopg2.connect(conn_info)
            except:
                conn = None
            if not conn:
                # print "Case when the pass/user are not saved in the project"
                (success, user, passwd) = QgsCredentials.instance().get(conn_info, None, None)
                if success:
                    QgsCredentials.instance().put(conn_info, user, passwd)
                uri.setPassword(passwd)
                uri.setUsername(user)
            self._pg_conn_info = uri.connectionInfo()

        return self._pg_conn_info
开发者ID:Roel,项目名称:qgis-versioning,代码行数:35,代码来源:versioning.py


示例6: setCredentials

 def setCredentials(self, db, conInfo, user):
     (success, user, password) = QgsCredentials.instance().get(conInfo, user, None)
     if not success:
         return
     else:
         db.setPassword(password)
         if not db.open():
             self.setCredentials(db, conInfo, user)
         else:
             QgsCredentials.instance().put(conInfo, user, password)
开发者ID:alexdsz,项目名称:DsgTools,代码行数:10,代码来源:postgisDBTool.py


示例7: connect_to_uri

    def connect_to_uri(self, uri):
        self.close_connection()
        self.host = uri.host() or os.environ.get('PGHOST')
        self.port = uri.port() or os.environ.get('PGPORT')

        username = uri.username() or os.environ.get('PGUSER') or os.environ.get('USER')
        password = uri.password() or os.environ.get('PGPASSWORD')

        try:
            self.connection = psycopg2.connect(uri.connectionInfo())
        except self.pg_error_types() as e:
            err = str(e)
            conninfo = uri.connectionInfo()

            ok, username, password = QgsCredentials.instance().get(
                conninfo, username, password, err)
            if not ok:
                raise Exception(e)

            if username:
                uri.setUsername(username)

            if password:
                uri.setPassword(password)

            self.connection = psycopg2.connect(uri.connectionInfo())

        self.pgencoding = self.connection.encoding

        return True
开发者ID:fgcartographix,项目名称:qgis-menu-builder,代码行数:30,代码来源:menu_builder_dialog.py


示例8: checkPasswordSupply

 def checkPasswordSupply(self, db, host, port, user, password):
     if not password or password == '':
         conInfo = 'host='+host+' port='+port+' dbname='+db
         (success, user, password) = QgsCredentials.instance().get(conInfo, user, None)
         if not success:
             QMessageBox.warning(self, self.tr('Warning!'), self.tr('Password not supplied. Nothing can be done!'))
             return False, None
     return True, password
开发者ID:phborba,项目名称:DSGManagementTools,代码行数:8,代码来源:dsg_management_tools_dialog.py


示例9: setCredentials

 def setCredentials(self, db, conInfo, user):
     """
     Sets connection credentials
     db: QSqlDatabase used
     conInfo: connection information
     user: user name
     """
     (success, user, password) = QgsCredentials.instance().get(conInfo, user, None)
     if not success:
         return
     else:
         db.setPassword(password)
         db.setUserName(user)
         if not db.open():
             self.setCredentials(db, conInfo, user)
         else:
             QgsCredentials.instance().put(conInfo, user, password)
开发者ID:lcoandrade,项目名称:DsgTools,代码行数:17,代码来源:postgisDBTool.py


示例10: __init__

    def __init__(self, uri):
        DBConnector.__init__(self, uri)

        self.host = uri.host() or os.environ.get('PGHOST')
        self.port = uri.port() or os.environ.get('PGPORT')

        username = uri.username() or os.environ.get('PGUSER') or os.environ.get('USER')
        password = uri.password() or os.environ.get('PGPASSWORD')

        try:
            self.connection = psycopg2.connect(self._connectionInfo().encode('utf-8'))
        except self.connection_error_types() as e:
            err = unicode(e)
            uri = self.uri()
            conninfo = uri.connectionInfo()

            for i in range(3):
                (ok, username, password) = QgsCredentials.instance().get(conninfo, username, password, err)
                if not ok:
                    raise ConnectionError(e)

                if username:
                    uri.setUsername(username)

                if password:
                    uri.setPassword(password)

                try:
                    self.connection = psycopg2.connect(uri.connectionInfo().encode('utf-8'))
                    QgsCredentials.instance().put(conninfo, username, password)
                except self.connection_error_types() as e:
                    if i == 2:
                        raise ConnectionError(e)

                    err = unicode(e)

        self.connection.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)

        c = self._execute(None, u"SELECT current_user")
        self.user = self._fetchone(c)
        self._close_cursor(c)

        self._checkSpatial()
        self._checkRaster()
        self._checkGeometryColumnsTable()
        self._checkRasterColumnsTable()
开发者ID:Geoneer,项目名称:QGIS,代码行数:46,代码来源:connector.py


示例11: saveToPostGIS

 def saveToPostGIS(self):
     dlg = PostgisTableSelector(self, self.output.name.lower())
     dlg.exec_()
     if dlg.connection:
         settings = QSettings()
         mySettings = '/PostgreSQL/connections/' + dlg.connection
         dbname = settings.value(mySettings + '/database')
         user = settings.value(mySettings + '/username')
         host = settings.value(mySettings + '/host')
         port = settings.value(mySettings + '/port')
         password = settings.value(mySettings + '/password')
         uri = QgsDataSourceURI()
         uri.setConnection(host, str(port), dbname, user, password)
         uri.setDataSource(dlg.schema, dlg.table, "the_geom")
         connInfo = uri.connectionInfo()
         (success, user, passwd) = QgsCredentials.instance().get(connInfo, None, None)
         if success:
             QgsCredentials.instance().put(connInfo, user, passwd)
         self.leText.setText("postgis:" + uri.uri())
开发者ID:Antoviscomi,项目名称:QGIS,代码行数:19,代码来源:OutputSelectionPanel.py


示例12: getUserCredentials

    def getUserCredentials(self, lyr):
        """
        Gets user credentials to acess the database
        """
        dataSourceUri = QgsDataSourceURI(lyr.dataProvider().dataSourceUri())
        if dataSourceUri.host() == '':
            return (None, None)

        if dataSourceUri.password() != '':
            return (dataSourceUri.username(), dataSourceUri.password())

        connInfo = dataSourceUri.connectionInfo()
        (success, user, passwd ) = QgsCredentials.instance().get(connInfo, dataSourceUri.username(), None)
        # Put the credentials back (for yourself and the provider), as QGIS removes it when you "get" it
        if success:
            QgsCredentials.instance().put(connInfo, user, passwd)
        else:
            return (None, None)

        return (user, passwd)
开发者ID:lcoandrade,项目名称:DsgTools,代码行数:20,代码来源:complexWindow.py


示例13: ogrConnectionString

    def ogrConnectionString(self, uri):
        ogrstr = None

        layer = dataobjects.getObjectFromUri(uri, False)
        if layer is None:
            return uri
        provider = layer.dataProvider().name()
        if provider == 'spatialite':
            # dbname='/geodata/osm_ch.sqlite' table="places" (Geometry) sql=
            regex = re.compile("dbname='(.+)'")
            r = regex.search(unicode(layer.source()))
            ogrstr = r.groups()[0]
        elif provider == 'postgres':
            # dbname='ktryjh_iuuqef' host=spacialdb.com port=9999
            # user='ktryjh_iuuqef' password='xyqwer' sslmode=disable
            # key='gid' estimatedmetadata=true srid=4326 type=MULTIPOLYGON
            # table="t4" (geom) sql=
            dsUri = QgsDataSourceURI(layer.dataProvider().dataSourceUri())
            conninfo = dsUri.connectionInfo()
            conn = None
            ok = False
            while not conn:
                try:
                    conn = psycopg2.connect(dsUri.connectionInfo())
                except psycopg2.OperationalError, e:
                    (ok, user, passwd ) = QgsCredentials.instance().get(conninfo, dsUri.username(), dsUri.password())
                    if not ok:
                        break

                    dsUri.setUsername( user )
                    dsUri.setPassword( passwd )

            if not conn:
                raise RuntimeError('Could not connect to PostgreSQL database - check connection info')

            if ok:
                QgsCredentials.instance().put(conninfo, user, passwd)

            ogrstr = "PG:%s" % dsUri.connectionInfo()
开发者ID:OspreyX,项目名称:QGIS,代码行数:39,代码来源:OgrAlgorithm.py


示例14: populateSchemas

 def populateSchemas(self):
     if self.childCount() != 0:
         return
     settings = QSettings()
     connSettings = '/PostgreSQL/connections/' + self.connection
     database = settings.value(connSettings + '/database')
     user = settings.value(connSettings + '/username')
     host = settings.value(connSettings + '/host')
     port = settings.value(connSettings + '/port')
     passwd = settings.value(connSettings + '/password')
     uri = QgsDataSourceURI()
     uri.setConnection(host, str(port), database, user, passwd)
     connInfo = uri.connectionInfo()
     (success, user, passwd) = QgsCredentials.instance().get(connInfo, None, None)
     if success:
         QgsCredentials.instance().put(connInfo, user, passwd)
         geodb = GeoDB(host, int(port), database, user, passwd)
         schemas = geodb.list_schemas()
         for oid, name, owner, perms in schemas:
             item = QTreeWidgetItem()
             item.setText(0, name)
             item.setIcon(0, self.schemaIcon)
             self.addChild(item)
开发者ID:Antoviscomi,项目名称:QGIS,代码行数:23,代码来源:PostgisTableSelector.py


示例15: toMapLayer

    def toMapLayer(self):
        from qgis.core import QgsRasterLayer, QgsContrastEnhancement, QgsDataSourceURI, QgsCredentials

        rl = QgsRasterLayer(self.gdalUri(), self.name)
        if not rl.isValid():
            err = rl.error().summary()
            uri = QgsDataSourceURI(self.database().uri())
            conninfo = uri.connectionInfo(False)
            username = uri.username()
            password = uri.password()

            for i in range(3):
                (ok, username, password) = QgsCredentials.instance().get(conninfo, username, password, err)
                if ok:
                    uri.setUsername(username)
                    uri.setPassword(password)
                    rl = QgsRasterLayer(self.gdalUri(uri), self.name)
                    if rl.isValid():
                        break

        if rl.isValid():
            rl.setContrastEnhancement(QgsContrastEnhancement.StretchToMinimumMaximum)
        return rl
开发者ID:Antoviscomi,项目名称:QGIS,代码行数:23,代码来源:plugin.py


示例16: diviLogin

 def diviLogin(self):
     QgsMessageLog.logMessage('Fetching token', 'DIVI')
     settings = QSettings()
     (success, email, password) = QgsCredentials.instance().get( 
         'Logowanie DIVI', settings.value('%s/email' % CONFIG_NAME, None), None )
     if not success:
         return
     content = self.sendPostRequest('/authenticate', {
             'email': email,
             'password' : password,
             'remember': True
         })
     try:
         data = json.loads(content)
     except TypeError:
         return
     self.token = data['token']
     settings.setValue('%s/email' % CONFIG_NAME, email)
     settings.setValue('%s/token' % CONFIG_NAME, self.token)
     settings.setValue('%s/status' % CONFIG_NAME, data['status'])
     settings.setValue('%s/id' % CONFIG_NAME, data['id'])
     self.diviLogged.emit(email, self.token)
     return self.token
开发者ID:gis-support,项目名称:DIVI-QGIS-Plugin,代码行数:23,代码来源:connector.py


示例17: authenticationRequired

 def authenticationRequired(self, reply, authenticator ):
     # check if reached mas retry
     gw.instance().authenticationRetryCounter += 1
     if (gw.instance().authenticationRetryCounter % gw.instance().maxAuthenticationError) == 0:
         gw.instance().authenticationRetryCounter = 0 # reset counter
         message = self.tr("Autenticazione fallita piu' di %d volte" % gw.instance().maxAuthenticationError)
         self.message.emit(message, QgsMessageLog.CRITICAL)
         QMessageBox.critical(self, gw.MESSAGELOG_CLASS, message)
         # abort continuing request
         reply.abort()
         self.done.emit(False)
         return
     # if not authenticated ask credentials
     if not gw.instance().autenthicated:
         (ok, gw.instance().user, gw.instance().pwd) = QgsCredentials.instance().get("", gw.instance().user, gw.instance().pwd, self.tr("Inserisci User e PWD della tua utenza Geosisma"))
         if not ok: # MEANS PRESSED CANCEL
             gw.instance().authenticationRetryCounter = 0
             reply.abort()
             self.done.emit(False)
             return
     # do authentication
     authenticator.setUser(gw.instance().user)
     authenticator.setPassword(gw.instance().pwd)
开发者ID:faunalia,项目名称:rt_geosisma_offline,代码行数:23,代码来源:UploadManager.py


示例18: __init__

    def __init__(self, host=None, port=None, dbname=None, user=None,
                 passwd=None, service=None, uri=None):
        # Regular expression for identifiers without need to quote them
        self.re_ident_ok = re.compile(r"^\w+$")
        port = str(port)

        if uri:
            self.uri = uri
        else:
            self.uri = QgsDataSourceUri()
            if service:
                self.uri.setConnection(service, dbname, user, passwd)
            else:
                self.uri.setConnection(host, port, dbname, user, passwd)

        conninfo = self.uri.connectionInfo(False)
        err = None
        for i in range(4):
            expandedConnInfo = self.uri.connectionInfo(True)
            try:
                self.con = psycopg2.connect(expandedConnInfo)
                if err is not None:
                    QgsCredentials.instance().put(conninfo,
                                                  self.uri.username(),
                                                  self.uri.password())
                break
            except psycopg2.OperationalError as e:
                if i == 3:
                    raise QgsProcessingException(str(e))

                err = str(e)
                user = self.uri.username()
                password = self.uri.password()
                (ok, user, password) = QgsCredentials.instance().get(conninfo,
                                                                     user,
                                                                     password,
                                                                     err)
                if not ok:
                    raise QgsProcessingException(QCoreApplication.translate("PostGIS", 'Action canceled by user'))
                if user:
                    self.uri.setUsername(user)
                if password:
                    self.uri.setPassword(password)
            finally:
                # remove certs (if any) of the expanded connectionInfo
                expandedUri = QgsDataSourceUri(expandedConnInfo)

                sslCertFile = expandedUri.param("sslcert")
                if sslCertFile:
                    sslCertFile = sslCertFile.replace("'", "")
                    os.remove(sslCertFile)

                sslKeyFile = expandedUri.param("sslkey")
                if sslKeyFile:
                    sslKeyFile = sslKeyFile.replace("'", "")
                    os.remove(sslKeyFile)

                sslCAFile = expandedUri.param("sslrootcert")
                if sslCAFile:
                    sslCAFile = sslCAFile.replace("'", "")
                    os.remove(sslCAFile)

        self.has_postgis = self.check_postgis()
开发者ID:passengerxuhongli,项目名称:QGIS,代码行数:63,代码来源:postgis.py


示例19: ogrConnectionStringAndFormatFromLayer

    def ogrConnectionStringAndFormatFromLayer(layer):
        provider = layer.dataProvider().name()
        if provider == 'spatialite':
            # dbname='/geodata/osm_ch.sqlite' table="places" (Geometry) sql=
            regex = re.compile("dbname='(.+)'")
            r = regex.search(str(layer.source()))
            ogrstr = r.groups()[0]
            format = 'SQLite'
        elif provider == 'postgres':
            # dbname='ktryjh_iuuqef' host=spacialdb.com port=9999
            # user='ktryjh_iuuqef' password='xyqwer' sslmode=disable
            # key='gid' estimatedmetadata=true srid=4326 type=MULTIPOLYGON
            # table="t4" (geom) sql=
            dsUri = QgsDataSourceUri(layer.dataProvider().dataSourceUri())
            conninfo = dsUri.connectionInfo()
            conn = None
            ok = False
            while not conn:
                try:
                    conn = psycopg2.connect(dsUri.connectionInfo())
                except psycopg2.OperationalError:
                    (ok, user, passwd) = QgsCredentials.instance().get(conninfo, dsUri.username(), dsUri.password())
                    if not ok:
                        break

                    dsUri.setUsername(user)
                    dsUri.setPassword(passwd)

            if not conn:
                raise RuntimeError('Could not connect to PostgreSQL database - check connection info')

            if ok:
                QgsCredentials.instance().put(conninfo, user, passwd)

            ogrstr = "PG:%s" % dsUri.connectionInfo()
            format = 'PostgreSQL'
        elif provider == 'mssql':
            #'dbname=\'db_name\' host=myHost estimatedmetadata=true
            # srid=27700 type=MultiPolygon table="dbo"."my_table"
            # #(Shape) sql='
            dsUri = layer.dataProvider().uri()
            ogrstr = 'MSSQL:'
            ogrstr += 'database={0};'.format(dsUri.database())
            ogrstr += 'server={0};'.format(dsUri.host())
            if dsUri.username() != "":
                ogrstr += 'uid={0};'.format(dsUri.username())
            else:
                ogrstr += 'trusted_connection=yes;'
            if dsUri.password() != '':
                ogrstr += 'pwd={0};'.format(dsUri.password())
            ogrstr += 'tables={0}'.format(dsUri.table())
            format = 'MSSQL'
        elif provider == "oracle":
            # OCI:user/[email protected]:port/service:table
            dsUri = QgsDataSourceUri(layer.dataProvider().dataSourceUri())
            ogrstr = "OCI:"
            if dsUri.username() != "":
                ogrstr += dsUri.username()
                if dsUri.password() != "":
                    ogrstr += "/" + dsUri.password()
                delim = "@"

            if dsUri.host() != "":
                ogrstr += delim + dsUri.host()
                delim = ""
                if dsUri.port() != "" and dsUri.port() != '1521':
                    ogrstr += ":" + dsUri.port()
                ogrstr += "/"
                if dsUri.database() != "":
                    ogrstr += dsUri.database()
            elif dsUri.database() != "":
                ogrstr += delim + dsUri.database()

            if ogrstr == "OCI:":
                raise RuntimeError('Invalid oracle data source - check connection info')

            ogrstr += ":"
            if dsUri.schema() != "":
                ogrstr += dsUri.schema() + "."

            ogrstr += dsUri.table()
            format = 'OCI'
        else:
            ogrstr = str(layer.source()).split("|")[0]
            path, ext = os.path.splitext(ogrstr)
            format = QgsVectorFileWriter.driverForExtension(ext)

        return ogrstr, '"' + format + '"'
开发者ID:jonnyforestGIS,项目名称:QGIS,代码行数:88,代码来源:GdalUtils.py


示例20: __init__

    def __init__(self, uri):
        DBConnector.__init__(self, uri)

        self.host = uri.host() or os.environ.get('PGHOST')
        self.port = uri.port() or os.environ.get('PGPORT')

        username = uri.username() or os.environ.get('PGUSER')
        password = uri.password() or os.environ.get('PGPASSWORD')

        # Do not get db and user names from the env if service is used
        if uri.service() is None:
            if username is None:
                username = os.environ.get('USER')
            self.dbname = uri.database() or os.environ.get('PGDATABASE') or username
            uri.setDatabase(self.dbname)

        expandedConnInfo = self._connectionInfo()
        try:
            self.connection = psycopg2.connect(expandedConnInfo.encode('utf-8'))
        except self.connection_error_types() as e:
            err = unicode(e)
            uri = self.uri()
            conninfo = uri.connectionInfo(False)

            for i in range(3):
                (ok, username, password) = QgsCredentials.instance().get(conninfo, username, password, err)
                if not ok:
                    raise ConnectionError(e)

                if username:
                    uri.setUsername(username)

                if password:
                    uri.setPassword(password)

                newExpandedConnInfo = uri.connectionInfo(True)
                try:
                    self.connection = psycopg2.connect(newExpandedConnInfo.encode('utf-8'))
                    QgsCredentials.instance().put(conninfo, username, password)
                except self.connection_error_types() as e:
                    if i == 2:
                        raise ConnectionError(e)

                    err = unicode(e)
                finally:
                    # remove certs (if any) of the expanded connectionInfo
                    expandedUri = QgsDataSourceUri(newExpandedConnInfo)

                    sslCertFile = expandedUri.param("sslcert")
                    if sslCertFile:
                        sslCertFile = sslCertFile.replace("'", "")
                        os.remove(sslCertFile)

                    sslKeyFile = expandedUri.param("sslkey")
                    if sslKeyFile:
                        sslKeyFile = sslKeyFile.replace("'", "")
                        os.remove(sslKeyFile)

                    sslCAFile = expandedUri.param("sslrootcert")
                    if sslCAFile:
                        sslCAFile = sslCAFile.replace("'", "")
                        os.remove(sslCAFile)
        finally:
            # remove certs (if any) of the expanded connectionInfo
            expandedUri = QgsDataSourceUri(expandedConnInfo)

            sslCertFile = expandedUri.param("sslcert")
            if sslCertFile:
                sslCertFile = sslCertFile.replace("'", "")
                os.remove(sslCertFile)

            sslKeyFile = expandedUri.param("sslkey")
            if sslKeyFile:
                sslKeyFile = sslKeyFile.replace("'", "")
                os.remove(sslKeyFile)

            sslCAFile = expandedUri.param("sslrootcert")
            if sslCAFile:
                sslCAFile = sslCAFile.replace("'", "")
                os.remove(sslCAFile)

        self.connection.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)

        c = self._execute(None, u"SELECT current_user,current_database()")
        self.user, self.dbname = self._fetchone(c)
        self._close_cursor(c)

        self._checkSpatial()
        self._checkRaster()
        self._checkGeometryColumnsTable()
        self._checkRasterColumnsTable()
开发者ID:NyakudyaA,项目名称:QGIS,代码行数:91,代码来源:connector.py



注:本文中的qgis.core.QgsCredentials类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python core.QgsDataSourceURI类代码示例发布时间:2022-05-26
下一篇:
Python core.QgsCoordinateTransformContext类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap