Esempio n. 1
0
    def showSchema(self, table):
        """
        Public slot to show the schema of a table.
        
        @param table name of the table to be shown (string)
        """
        rec = self.connections.currentDatabase().record(table)
        model = QStandardItemModel(self.table)

        model.insertRows(0, rec.count())
        model.insertColumns(0, 7)

        model.setHeaderData(0, Qt.Horizontal, "Fieldname")
        model.setHeaderData(1, Qt.Horizontal, "Type")
        model.setHeaderData(2, Qt.Horizontal, "Length")
        model.setHeaderData(3, Qt.Horizontal, "Precision")
        model.setHeaderData(4, Qt.Horizontal, "Required")
        model.setHeaderData(5, Qt.Horizontal, "Auto Value")
        model.setHeaderData(6, Qt.Horizontal, "Default Value")

        for i in range(rec.count()):
            fld = rec.field(i)
            model.setData(model.index(i, 0), fld.name())
            if fld.typeID() == -1:
                model.setData(model.index(i, 1),
                              QVariant.typeToName(fld.type()))
            else:
                model.setData(
                    model.index(i, 1),
                    "{0} ({1})".format(QVariant.typeToName(fld.type()),
                                       fld.typeID()))
            if fld.length() < 0:
                model.setData(model.index(i, 2), "?")
            else:
                model.setData(model.index(i, 2), fld.length())
            if fld.precision() < 0:
                model.setData(model.index(i, 3), "?")
            else:
                model.setData(model.index(i, 3), fld.precision())
            if fld.requiredStatus() == -1:
                model.setData(model.index(i, 4), "?")
            else:
                model.setData(model.index(i, 4), bool(fld.requiredStatus()))
            model.setData(model.index(i, 5), fld.isAutoValue())
            model.setData(model.index(i, 6), fld.defaultValue())

        self.table.setModel(model)
        self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)

        self.table.resizeColumnsToContents()

        self.updateActions()
Esempio n. 2
0
 def showSchema(self, table):
     """
     Public slot to show the schema of a table.
     
     @param table name of the table to be shown (string)
     """
     rec = self.connections.currentDatabase().record(table)
     model = QStandardItemModel(self.table)
     
     model.insertRows(0, rec.count())
     model.insertColumns(0, 7)
     
     model.setHeaderData(0, Qt.Horizontal, "Fieldname")
     model.setHeaderData(1, Qt.Horizontal, "Type")
     model.setHeaderData(2, Qt.Horizontal, "Length")
     model.setHeaderData(3, Qt.Horizontal, "Precision")
     model.setHeaderData(4, Qt.Horizontal, "Required")
     model.setHeaderData(5, Qt.Horizontal, "Auto Value")
     model.setHeaderData(6, Qt.Horizontal, "Default Value")
     
     for i in range(rec.count()):
         fld = rec.field(i)
         model.setData(model.index(i, 0), fld.name())
         if fld.typeID() == -1:
             model.setData(model.index(i, 1),
                           QVariant.typeToName(fld.type()))
         else:
             model.setData(
                 model.index(i, 1), "{0} ({1})".format(
                     QVariant.typeToName(fld.type()), fld.typeID()))
         if fld.length() < 0:
             model.setData(model.index(i, 2), "?")
         else:
             model.setData(model.index(i, 2), fld.length())
         if fld.precision() < 0:
             model.setData(model.index(i, 3), "?")
         else:
             model.setData(model.index(i, 3), fld.precision())
         if fld.requiredStatus() == -1:
             model.setData(model.index(i, 4), "?")
         else:
             model.setData(model.index(i, 4), bool(fld.requiredStatus()))
         model.setData(model.index(i, 5), fld.isAutoValue())
         model.setData(model.index(i, 6), fld.defaultValue())
     
     self.table.setModel(model)
     self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
     
     self.table.resizeColumnsToContents()
     
     self.updateActions()
Esempio n. 3
0
class ReaderExcelThread(QThread):
    standarModel_signal = pyqtSignal(QStandardItemModel)
    # sqlTableModel_signal = pyqtSignal(QSqlTableModel)
    progressRate_signal = pyqtSignal(str)
    finished_signal = pyqtSignal()

    # '''
    # 读取表格的方式分为两种:
    # 1.读取后直接使用,即直接设置并返回为QStandardItemModel
    # 2.读取后放到缓存数据库,从数据库中取数据,返回QSqlTableModel
    # '''
    def __init__(self, file_name, operate_way=1):
        super().__init__()
        self.file_name = file_name
        self.operate_way = operate_way
        self.model = QStandardItemModel()

    def run(self):
        # 这里读取数据返回列表便于表格中数据的更新
        self.progressRate_signal.emit("数据载入准备中...")
        data_list = read_excel(self.file_name)
        if data_list == -1:
            return
        print('start work!')
        cnt = len(data_list)
        for i, rows in enumerate(data_list):
            row = [QStandardItem(str(cell)) for cell in rows]
            self.model.appendRow(row)
            percent = int(i / cnt * 100 + 0.5)
            self.progressRate_signal.emit("数据载入进度:{}%".format(percent))

        #自动填满,这样更加美观(不过增加了后期数据处理难度!)
        while self.model.rowCount() < 22:
            self.model.insertRows(self.model.rowCount(), 1)
        while self.model.columnCount() < 15:
            self.model.insertColumns(self.model.columnCount(), 1)

        #数据加载完成
        self.progressRate_signal.emit("数据载入进度:100%")
        self.standarModel_signal.emit(self.model)
        print('send finised')
        self.finished_signal.emit()