def getObject(self, row): val = self.data(self.index(row, 0), Qt.UserRole) fld = val if val is not None else self._getNewObject() fld.name = self.data(self.index(row, 0)) or "" typestr = self.data(self.index(row, 1)) or "" regex = QRegExp("([^\(]+)\(([^\)]+)\)") startpos = regex.indexIn(typestr) if startpos >= 0: fld.dataType = regex.cap(1).strip() fld.modifier = regex.cap(2).strip() else: fld.modifier = None fld.dataType = typestr fld.notNull = self.data(self.index(row, 2), Qt.CheckStateRole) == Qt.Unchecked fld.primaryKey = self.data(self.index(row, 1), Qt.UserRole) return fld
def __init__(self, row, table): TableField.__init__(self, table) self.num, self.name, self.dataType, self.charMaxLen, self.modifier, self.notNull, self.hasDefault, self.default, typeStr = row self.primaryKey = False # get modifier (e.g. "precision,scale") from formatted type string trimmedTypeStr = typeStr.strip() regex = QRegExp("\((.+)\)$") startpos = regex.indexIn(trimmedTypeStr) if startpos >= 0: self.modifier = regex.cap(1).strip() else: self.modifier = None # find out whether fields are part of primary key for con in self.table().constraints(): if con.type == TableConstraint.TypePrimaryKey and self.num in con.columns: self.primaryKey = True break
def getSpatialRefInfo(self, srid): if not self.has_spatial: return try: c = self._execute(None, "SELECT srtext FROM spatial_ref_sys WHERE srid = '%d'" % srid) except DbError as e: return sr = self._fetchone(c) self._close_cursor(c) if sr is None: return srtext = sr[0] # try to extract just SR name (should be quoted in double quotes) regex = QRegExp('"([^"]+)"') if regex.indexIn(srtext) > -1: srtext = regex.cap(1) return srtext
def getSpatialRefInfo(self, srid): if not self.has_spatial: return try: c = self._execute( None, "SELECT srtext FROM spatial_ref_sys WHERE srid = '%d'" % srid) except DbError: return sr = self._fetchone(c) self._close_cursor(c) if sr is None: return srtext = sr[0] # try to extract just SR name (should be quoted in double quotes) regex = QRegExp('"([^"]+)"') if regex.indexIn(srtext) > -1: srtext = regex.cap(1) return srtext