コード例 #1
0
 def __init__(self, database, parent=None):
     super(SqliteTablesWidget, self).__init__(parent)
     self.setColumnCount(2)
     self.setHorizontalHeaderLabels(["Table", "Number of rows"])
     self.verticalHeader().setVisible(False)
     self.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
     self.setShowGrid(False)
     self.setSortingEnabled(True)
     sqlitedriver = ModuleProcessusManager().get('SqliteDB')
     query = 'SELECT tbl_name FROM sqlite_master where type="table";'
     tables = sqlitedriver.executeFrom(database, query)
     if tables is not None:
         idx = self.rowCount()
         for table in tables:
             self.setRowCount(idx + 1)
             query = "select count(*) from {}".format(table[0])
             counter = sqlitedriver.executeFrom(database, query)
             count = 0
             if counter:
                 data = counter.fetchone()
                 if data is not None and len(data) > 0:
                     count = data[0]
             nameItem = QtGui.QTableWidgetItem()
             nameItem.setText(QtCore.QString.fromUtf8(table[0]))
             countItem = SqliteTablesCountItem(count)
             self.setItem(idx, 0, nameItem)
             self.setItem(idx, 1, countItem)
             idx += 1
     self.resizeColumnsToContents()
コード例 #2
0
 def populate(self, database, query):
     self.clear()
     self.setColumnCount(0)
     self.setRowCount(0)
     sqlitedriver = ModuleProcessusManager().get('SqliteDB')
     try:
         rows = sqlitedriver.executeFrom(database, query)
     except apsw.Error:
         return
     try:
         descriptions = rows.getdescription()
     # if there's no row, this exception is thrown
     except apsw.ExecutionCompleteError:
         return
     header = []
     for description in descriptions:
         header.append(description[0])
     self.setColumnCount(len(header))
     self.setHorizontalHeaderLabels(header)
     for idx in xrange(0, len(header)):
         self.horizontalHeaderItem(idx).setTextAlignment(
             QtCore.Qt.AlignLeft)
     finished = False
     idx = 0
     # we use next to be able to continue if there's an error while getting
     # one row.
     while not finished:
         try:
             row = rows.next()
             self.setRowCount(idx + 1)
             for column, data in enumerate(row):
                 if self.__isDate(descriptions[column][0]):
                     item = SqliteRowItemWidget(data,
                                                descriptions[column][1],
                                                True)
                 else:
                     item = SqliteRowItemWidget(data,
                                                descriptions[column][1])
                 self.setItem(idx, column, item)
             idx += 1
         except StopIteration:
             finished = True
         except apsw.Error:
             continue
     self.resizeColumnsToContents()