Source code for pyqtdb.DBBrowser

# -*- coding: utf-8 -*-


from PyQt4.QtGui import QMainWindow, QToolBar, QTreeWidget, QTreeWidgetItem, QAbstractItemView, QTreeView, QWidget, QHBoxLayout
from PyQt4.QtSql import QSqlDatabase
 
from PyQt4.QtCore import Qt, SIGNAL



[docs]class DBBrowser(QMainWindow): def __init__(self, parent, server): QMainWindow.__init__(self, parent) self.debug = False self.server = server self.db = None self.setWindowTitle("Database Browser") #s#elf.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint) topBar = QToolBar() self.addToolBar(Qt.TopToolBarArea, topBar) self.cenWid = QWidget() self.setCentralWidget(self.cenWid) self.mainLayout = QHBoxLayout() self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(0) self.cenWid.setLayout( self.mainLayout ) self.treeTables = QTreeWidget() self.mainLayout.addWidget(self.treeTables, 1) self.treeTables.setHeaderLabels(["Table"]) self.treeTables.setSelectionBehavior( QAbstractItemView.SelectRows ) self.treeTables.setSelectionMode( QTreeView.SingleSelection ) self.connect( self.treeTables, SIGNAL( 'itemSelectionChanged()' ), self.on_table ) self.treeColumns = QTreeWidget() self.mainLayout.addWidget(self.treeColumns, 4) self.treeColumns.setHeaderLabels(["Column", "Type", "Nullable"]) self.db_connect() #self.fetch()
[docs] def on_table(self): item = self.treeTables.currentItem() if item == None: return self.fetch( table = str(item.text(0)) )
[docs] def db_connect(self): #print "db_connect", self.server self.db = QSqlDatabase.addDatabase("QMYSQL") self.db.setHostName(self.server['server']) self.db.setUserName(self.server['user']) self.db.setPassword(self.server['passwd']) ok = self.db.open() print "open", ok
#self.db.setHostName(self.server['server'])
[docs] def load_data(self, data): if "tables" in data: self.treeTables.clear() for t in data['tables']: item = QTreeWidgetItem() item.setText(0, t['table']) self.treeTables.addTopLevelItem(item) else: self.treeColumns.clear() for t in data['columns']: item = QTreeWidgetItem() item.setText(0, t['column']) item.setText(1, t['type']) item.setText(2, "Yes" if t['nullable'] else "-") self.treeColumns.addTopLevelItem(item)