def test_getDbListJson(self): db=MongoAccess() db_list=db.getDbList() # "local" database should always be in MongoDb server self.assertEqual("local" in db_list,True)
class MainWindow(QtGui.QWidget): #def __init__(self, rows): def __init__(self): super(MainWindow, self).__init__() self.table = QtGui.QTableWidget() self.db_list=QtGui.QComboBox() self.table_list=QtGui.QListWidget() self.db=MongoAccess() self.setWindowTitle("MongoDb browser") self.resize(800, 600) vbox = QtGui.QHBoxLayout() self.setLayout(vbox) mid_layout=QtGui.QVBoxLayout() mid_layout.addWidget(self.db_list) mid_layout.addWidget(self.table_list) #mid_layout.addWidget(self.table) vbox.addLayout(mid_layout) vbox.addWidget(self.table) #setting up events self.db_list.currentIndexChanged.connect(self.dbChanged) self.table_list.currentRowChanged.connect(self.tableChanged) #getting db data self.getDbList() def connectDb(self,host,port): self.db.connect(host,port) #self.connection = pymongo.Connection('localhost', 27017) def getDbList(self): db_list=self.db.getDbList() if db_list is not None: self.table_list.clear() self.db_list.addItems(db_list) def dbChanged(self,combo_index): self.table_list.clear() #self.table_list.adjustSize() self.table.clear() self.populateTableList(self.db_list.currentText()) def populateTableList(self,dbName): self.table_list.clear() tables=self.db.getTableList(dbName) self.table_list.addItems(tables) self.table_list.adjustSize() def tableChanged(self,table_index): self.table.clear() self.populateTableData(self.table_list.currentItem().text()) def populateTableData(self,table_name): self.table.clear() col_names=self.db.getTableColumns(table_name) table_data=self.db.getAll(table_name) self.setHeaders(col_names) self.table.setRowCount(table_data.count()) for col_index,row in enumerate(table_data): for key in row: self.addCell(str(row[key]),col_names.index(key),col_index) def addCell(self,item_text,row,col): table_item = QtGui.QTableWidgetItem(item_text) self.table.setItem(col,row, table_item) def setHeaders(self,headers): self.table.setColumnCount(len(headers)) self.table.setHorizontalHeaderLabels(tuple(headers))