コード例 #1
0
   def __init__(self):
      super(SQLiteHandler, self).__init__()
      self.ui = Ui_MainWindow()
      self.ui.setupUi(self)
      self.show()

      self.openDataBase("cocktails")
コード例 #2
0
class SQLiteHandler(QMainWindow):

   def __init__(self):
      super(SQLiteHandler, self).__init__()
      self.ui = Ui_MainWindow()
      self.ui.setupUi(self)
      self.show()

      self.openDataBase("cocktails")
      #self.getDataBase()




   def getDataBase(self):
      filePath = QFileDialog.getOpenFileName(filter = u'SQLite File (*.db)')
      if filePath:
         self.openDataBase(filePath)

   def openDataBase(self, filename = None):
      self.currFilename = filename
      self.sqliteConnector = SQLiteConnector(self.currFilename)
      if not self.sqliteConnector.connection:
         QMessageBox.critical(self,
               "Error",
               u'The file cannot be opened')

      else:
         self.showTableNames()

   def showTableNames(self):
      tables_names = self.sqliteConnector.getTableNames()
      if len(tables_names) > 0:
         tempTablesDialog, output = QInputDialog.getItem(self,
               "Tables available in " + self.currFilename,
               "",
               tables_names,
               current = 0,
               editable = False) 

         if output:
            self.openTable(tempTablesDialog)

      else:
         QMessageBox.critical(self, "Error", u'There are no tables registered in ' + self.currFilename)

   def openTable(self, tableName):
      #Get Header Names
      self.columnNames = self.sqliteConnector.getColumnNames(tableName)
      if len(self.columnNames) > 0:
         self.setupTableHeaders()
         self.ui.tableWidget.clearContents()

         #Get query data
         searchResult = self.sqliteConnector.getCompleteData(tableName)
         row = 0
         while searchResult.next():
            self.ui.tableWidget.setRowCount(row + 1)
            for column in range(len(self.columnNames)):
               temp = searchResult.value(column).toString()
               item = QTableWidgetItem(temp)
               self.ui.tableWidget.setItem(row, column, item)
            row += 1
         self.ui.tableWidget.setRowCount(row + 1)






   def setupTableHeaders(self):
        self.ui.tableWidget.setColumnCount(len(self.columnNames))
        self.ui.tableWidget.setHorizontalHeaderLabels(self.columnNames)
        currTableHeaders = self.ui.tableWidget.horizontalHeader()
        currTableHeaders.setResizeMode(QHeaderView.Stretch)