#!/usr/bin/python
import wx
import MySQLdb
###############################################
class func:
    #------------------------------------
    def __init__(self,opt):
        """Constractor"""
        self.opt = opt
###############################################
class dbOpt():
    #------------------------------------
    def __init__(self,host,user,passwd,dbname,tbname):
        self.host = host
        self.user = user
        self.passwd = passwd
        self.dbname = dbname
        self.tbname = tbname
    #------------------------------------
    def dbSelect(self):
        db = MySQLdb.connect(host=self.host, user=self.user, passwd=self.passwd, db=self.dbname)
        selectSql = "SELECT * FROM " + self.tbname
        cursor = db.cursor()
        cursor.execute(selectSql)
        db.commit()
        data = cursor.fetchall()
        cursor.close()
        db.close()
        data = "{}".format(data)
        return data
    #------------------------------------
    def dbDescribe(self):
        db = MySQLdb.connect(host="localhost", user="root", passwd="1988628",db=self.dbname)
        selectSql = "describe " + self.tbname
        cursor = db.cursor()
        cursor.execute(selectSql)
        db.commit()
        data = cursor.fetchall()
        cursor.close()
        db.close()
        data = "{}".format(data)
        return data
###############################################
class myFrame(wx.Frame):
    #-------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "Colin's SQL")
        # Add a panel, so it looks the correct on all platfroms
        panel = wx.Panel(self, wx.ID_ANY)
        opts = [func("show tables"),
               func("describe")]
        sampleList = []
        self.cb = wx.ComboBox(panel, size=wx.DefaultSize,choices=sampleList)
        self.widgetMaker(self.cb, opts)
        self.dbhost = wx.TextCtrl(panel)
        self.dbuser = wx.TextCtrl(panel)
        self.dbpasswd = wx.TextCtrl(panel)
        self.dbfield = wx.TextCtrl(panel)
        self.tbfield = wx.TextCtrl(panel)
        self.contents = wx.TextCtrl(panel,style=wx.TE_MULTILINE|wx.HSCROLL)
        tsizer = wx.BoxSizer()
        tsizer.Add(self.dbhost, 1, wx.EXPAND)
        tsizer.Add(self.dbuser, 1, wx.EXPAND)
        tsizer.Add(self.dbpasswd, 1, wx.EXPAND)
        hsizer = wx.BoxSizer()
        hsizer.Add(self.dbfield, 1, wx.EXPAND)
        hsizer.Add(self.tbfield, 1, wx.EXPAND)
        hsizer.Add(self.cb, 0, wx.RIGHT, 5)
        vsizer = wx.BoxSizer(wx.VERTICAL)
        vsizer.Add(tsizer, 0, wx.EXPAND, 5)
        vsizer.Add(hsizer, 0, wx.EXPAND, 5)
        vsizer.Add(self.contents, 1, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM)
        panel.SetSizer(vsizer)
    #-------------------------------------
    def widgetMaker(self, widget, objects):
        """"""
        for obj in objects:
            widget.Append(obj.opt, obj)
        widget.Bind(wx.EVT_COMBOBOX, self.onSelect)
    #-------------------------------------
    def onSelect(self, event):
        obj = self.cb.GetClientData(self.cb.GetSelection())
        if obj.opt == "show tables":
            stb=dbOpt(self.dbhost.GetValue(),self.dbuser.GetValue(),self.dbpasswd.GetValue(),self.dbfield.GetValue(),self.tbfield.GetValue())
            self.contents.SetValue(stb.dbSelect())
        elif obj.opt == "describe":
            stb=dbOpt(self.dbhost.GetValue(),self.dbuser.GetValue(),self.dbpasswd.GetValue(),self.dbfield.GetValue(),self.tbfield.GetValue())
            self.contents.SetValue(stb.dbDescribe())
# Run the Program
if __name__ == "__main__":
    app = wx.App(False)
    frame = myFrame()
    frame.Show()
app.MainLoop()
No comments:
Post a Comment