Python之数据库检查模块

一 主界面

1 代码

# -*- coding: utf-8 -*-
#####################################
## Python code generated with wxFormBuilder
## http://www.wxformbuilder.org/
## Check模块显示窗口
## PLEASE DO "NOT" EDIT THIS FILE!
###################################
import wx
import wx.xrc
#导入查看数据库窗口模块
from Check_Database_Window import MyFrame21
#导入查看数据库中表模块
from Check_Table_Window import MyFrame23
#导入查看数据记录模块(数据)
from Check_Document_Window import MyFrame25
#导入查看表结构模块
from Check_Desc_Window import MyFrame27
####################
## Class MyFrame19
####################
class MyFrame19(wx.Frame):
    #初始化函数,需要在初始化是传入父面板
    def __init__(self, parent):
        #主框架初始化
        wx.Frame.__init__(self, parent, id=wx.ID_ANY,
            title=wx.EmptyString,pos=wx.DefaultPosition,
            size=wx.Size(500, 155),
            style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
        self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
        #垂直布局管理器
        bSizer7 = wx.BoxSizer(wx.VERTICAL)
        #水平布局管理器
        bSizer8 = wx.BoxSizer(wx.HORIZONTAL)
        #添加一个空白文本框
        self.m_staticText6 = wx.StaticText(self,
            wx.ID_ANY, wx.EmptyString,
            wx.DefaultPosition, wx.Size(100, 50), 0)
        self.m_staticText6.Wrap(-1)
        #布局控制器8中加入文本框6
        bSizer8.Add(self.m_staticText6, 0, wx.ALL, 5)
        #查看DATABASE按钮
        self.m_button10 = wx.Button(self, wx.ID_ANY,
            u"查看DATABASE",
            wx.DefaultPosition, wx.Size(120, 50), 0)
        # 布局控制器8中加入查看Database
        bSizer8.Add(self.m_button10, 0, wx.ALL, 5)
        #查看TABLE按钮
        self.m_button11 = wx.Button(self, wx.ID_ANY,
            u"查看TABLE",wx.DefaultPosition,
            wx.Size(120, 50), 0)
        # 布局控制器8中加入查看数据表按钮
        bSizer8.Add(self.m_button11, 0, wx.ALL, 5)
        # 布局控制器8在布局控制7中
        bSizer7.Add(bSizer8, 0, wx.EXPAND, 5)
        #水平布局管理器
        bSizer9 = wx.BoxSizer(wx.HORIZONTAL)
        # 添加一个空白文本框
        self.m_staticText7 = wx.StaticText(self,
            wx.ID_ANY, wx.EmptyString,
            wx.DefaultPosition, wx.Size(100, 50), 0)
        self.m_staticText7.Wrap(-1)
        # 布局控制器9中加入文本框7
        bSizer9.Add(self.m_staticText7, 0, wx.ALL, 5)
        #查看记录按钮
        self.m_button12 = wx.Button(self,
            wx.ID_ANY, u"查看记录",
            wx.DefaultPosition, wx.Size(120, 50), 0)
        #将查看按钮添加到布局控制器9中
        bSizer9.Add(self.m_button12, 0, wx.ALL, 5)
        #描述按钮
        self.m_button13 = wx.Button(self, wx.ID_ANY,
            u"Desc",
            wx.DefaultPosition, wx.Size(120, 50), 0)
        # 将描述按钮添加到布局控制器9中
        bSizer9.Add(self.m_button13, 0, wx.ALL, 5)
        #将布局控制器9添加到布局控制器7中
        bSizer7.Add(bSizer9, 0, wx.EXPAND, 5)
        #以下三个方法是Window类的方法
        self.SetSizer(bSizer7)
        self.Layout()
        self.Centre(wx.BOTH)
        # 给各个按钮绑定事件
        self.m_button10.Bind(wx.EVT_BUTTON,
            self.m_button10OnButtonClick)
        self.m_button11.Bind(wx.EVT_BUTTON,
            self.m_button11OnButtonClick)
        self.m_button12.Bind(wx.EVT_BUTTON,
            self.m_button12OnButtonClick)
        self.m_button13.Bind(wx.EVT_BUTTON,
            self.m_button13OnButtonClick)
    #
    def __del__(self):
        pass
    # 点击按钮,显示各按钮对应的窗口
    def m_button10OnButtonClick(self, event):
        #
        window=MyFrame21(None)
        window.Show()
    def m_button11OnButtonClick(self, event):
        #
        window=MyFrame23(None)
        window.Show()
    def m_button12OnButtonClick(self, event):
        #
        window=MyFrame25(None)
        window.Show()
    def m_button13OnButtonClick(self, event):
        #
        window=MyFrame27(None)
        window.Show()
#测试代码
if __name__=='__main__':
    app=wx.App()
    window=MyFrame19(None)
    window.Show()
    app.MainLoop()

2 测试结果

二 显示数据库代码

1 代码

# -*- coding: UTF-8 -*-
import MySQLdb
from Notice import MyFrame3
from ReadCode import ReadCode
class Check_Database():
    # 打开数据库连接
    def __init__(self,sql,database='0'):
        if(not int(database)):
            readcode=ReadCode()
            Line=readcode.return_line()
            try:
                db = MySQLdb.connect("localhost",
                    "%s"%Line[0],"%s"%Line[1],
                    "%s"%Line[2])
            except:
                notice=MyFrame3(None,
                    '请检查主面板的用户名、密码'
                    '、DATABASE是否输入!')
                notice.Show()
            else:
                # 使用cursor()方法获取操作游标
                cursor = db.cursor()
                self.return_result=[]
                try:
                   # 执行SQL语句
                   cursor.execute(sql)
                   # 获取所有记录列表
                   results = cursor.fetchall()
                   for row in results:
                        for i in range(0,len(row)):
                            self.return_result.append(row[i])
                        self.return_result.append('\n')
                except:
                    notice = MyFrame3(None,
                            "Error: unable to fecth data")
                    notice.Show()
                # 关闭数据库连接
                db.close()
        else:
            readcode = ReadCode()
            Line = readcode.return_line()
            try:
                db = MySQLdb.connect("localhost", "%s" % Line[0]
                                     , "%s" % Line[1])
            except:
                pass
            else:
                # 使用cursor()方法获取操作游标
                cursor = db.cursor()
                self.return_result = []
                try:
                    # 执行SQL语句
                    cursor.execute(sql)
                    # 获取所有记录列表
                    results = cursor.fetchall()
                    for row in results:
                        for i in range(0, len(row)):
                            self.return_result.append(row[i])
                        self.return_result.append('\n')
                except:
                    notice=MyFrame3(None,
                              "Error: unable to fecth data")
                    notice.Show()
                # 关闭数据库连接
                db.close()
    def return_result(self):
        return self.return_result
if __name__=='__main__':
    check_database=Check_Database('show databases','1')
    for i in range(0,len(check_database.return_result)):
        print check_database.return_result[i]

2 测试结果

D:\Python27\python.exe E:/Python/MySQLControler/Check/Check_Database.py
information_schema
cakin
dbgirl
demo
leecx
mysql
performance_schema
shiro
sys
test
test1
test2
Process finished with exit code 0

三 数据库显示窗口

1 代码

# -*- coding: utf-8 -*-
##########################################
## Python code generated with wxFormBuilder
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
######################################
import wx
import wx.xrc
from Check_Database import Check_Database
#####################
## Class MyFrame21
####################
class MyFrame21(wx.Frame):
    def __init__(self, parent):
        #初始化框架
        wx.Frame.__init__(self, parent, id=wx.ID_ANY,
                title=wx.EmptyString,
                pos=wx.DefaultPosition,
                size=wx.Size(191, 799),
                style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
        #Windows类的方法
        self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
        #布局控制器
        bSizer1 = wx.BoxSizer(wx.VERTICAL)
        #文本控件
        self.m_textCtrl1 = wx.TextCtrl(self,
                    wx.ID_ANY, wx.EmptyString,
                    wx.DefaultPosition, wx.Size(300, 1000),
                    style=wx.TE_MULTILINE | wx.TE_READONLY)
        #文本控件加入到布局控制器中
        bSizer1.Add(self.m_textCtrl1, 0, wx.ALL, 5)
        #Window类的属性
        self.SetSizer(bSizer1)
        self.Layout()
        self.Centre(wx.BOTH)
        #定义一个检查数据库类
        check_database=Check_Database('show databases','1')
        #文本控件显示数据库结果
        show=''
        for i in range(0,len(check_database.return_result)):
            show+=check_database.return_result[i]
        self.m_textCtrl1.SetValue(show)
    def __del__(self):
        pass

#编入测试模块
if __name__=='__main__':
    app=wx.App()
    window=MyFrame21(None)
    window.Show()
    app.MainLoop()

2 测试结果

四 数据表描述

1 代码

# -*- coding: UTF-8 -*-
import MySQLdb
from Notice import MyFrame3
from ReadCode import ReadCode
class Check_Desc():
    # 打开数据库连接
    def __init__(self,table):
        readcode=ReadCode()
        Line=readcode.return_line()
        # 打开数据库连接
        db = MySQLdb.connect("localhost", "%s"%Line[0],
                             "%s"%Line[1], "%s"%Line[2])
        # 使用cursor()方法获取操作游标
        cursor = db.cursor()
        # SQL 查询语句
        sql="desc %s" % table
        self.return_result=[]
        try:
            cursor.execute(sql)
            # 获取所有记录列表
            results = cursor.fetchall()
            for row in results:
                for i in range(0, len(row)):
                    self.return_result.append(str(row[i])+' ')
                self.return_result.append('\n')
        except:
            notice=MyFrame3(None,"Error: unable to fecth data111")
            notice.Show()
        # 关闭数据库连接
        db.close()
    def return_result(self):
        return self.return_result
if __name__=='__main__':
    check_database=Check_Desc('create_user')
    for i in range(0,len(check_database.return_result)):
        print check_database.return_result[i]

2 测试结果

D:\Python27\python.exe E:/Python/MySQLControler/Check/Check_Desc.py
email
varchar(255)
YES
None

五 数据表描述窗口

1 代码

# -*- coding: utf-8 -*-
###########################################################################
## Python code generated with wxFormBuilder (version Feb 16 2016)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################
import wx
import wx.xrc
from Check_Database import Check_Database
from Check_Desc import Check_Desc
###########################################################################
## Class MyFrame27
###########################################################################
class MyFrame27(wx.Frame):
    def __init__(self, parent):
        #初始化框架
        wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString,
                          pos=wx.DefaultPosition,size=wx.Size(692, 523),
                          style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
        #Windows类方法
        self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
        #垂直布局控制器
        bSizer6 = wx.BoxSizer(wx.VERTICAL)
        #水平布局控制器
        bSizer7 = wx.BoxSizer(wx.HORIZONTAL)
        #表名输入提示框
        self.m_staticText4 = wx.StaticText(self, wx.ID_ANY, u"请输入想要查询结构的表名",
                                           wx.DefaultPosition, wx.Size(250, 50), 0)
        self.m_staticText4.Wrap(-1)
        #提示框在布局器7中
        bSizer7.Add(self.m_staticText4, 0, wx.ALL, 5)
        #输入提示框
        self.m_textCtrl5 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString,
                                       wx.DefaultPosition, wx.Size(120, 50), 0)
        #输入提示框在布局器7中
        bSizer7.Add(self.m_textCtrl5, 0, wx.ALL, 5)
        #确认按钮
        self.m_button3 = wx.Button(self, wx.ID_ANY, u"确定", wx.DefaultPosition,
                                   wx.Size(120, 50), 0)
        #确认按钮在布局7中
        bSizer7.Add(self.m_button3, 0, wx.ALL, 5)
        #布局器7在布局器6中
        bSizer6.Add(bSizer7, 0, wx.EXPAND, 5)
        #水平布局控制器
        bSizer8 = wx.BoxSizer(wx.HORIZONTAL)
        #用于显示数据表的框,只读,多行,在布局器8中
        self.m_textCtrl6 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString,
                                       wx.DefaultPosition, wx.Size(250, 800),
                                       style=wx.TE_READONLY|wx.TE_MULTILINE)
        bSizer8.Add(self.m_textCtrl6, 0, wx.ALL, 5)
        #用于显示结果,只读,多行,在布局器8中
        self.m_textCtrl7 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString,
                                       wx.DefaultPosition, wx.Size(600, 800),
                                       style=wx.TE_READONLY|wx.TE_MULTILINE)
        bSizer8.Add(self.m_textCtrl7, 0, wx.ALL, 5)
        #布局器8在布局器6中
        bSizer6.Add(bSizer8, 0, wx.EXPAND, 5)
        #Window类属性
        self.SetSizer(bSizer6)
        self.Layout()
        self.Centre(wx.BOTH)
        # 按钮绑定事件
        self.m_button3.Bind(wx.EVT_BUTTON, self.m_button3OnButtonClick)
        #######################Check_DATABASE#############################
        #获取数据库的数据表
        check_database=Check_Database('show tables')
        show=''
        for i in range(0,len(check_database.return_result)):
            show+=check_database.return_result[i]
        #显示数据库的数据表
        self.m_textCtrl6.SetValue(show)
    def __del__(self):
        pass
    # 获得对应数据库的数据表的表描述信息
    def m_button3OnButtonClick(self, event):
        check=Check_Desc(self.m_textCtrl5.GetValue())
        result=''
        for i in range(0,len(check.return_result)):
            result+=(str(check.return_result[i])+'\t')
        self.m_textCtrl7.SetValue(result)

#编入测试模块
if __name__=='__main__':
    app=wx.App()
    window=MyFrame27(None)
    window.Show()
    app.MainLoop()

2 测试结果

六 查询某个表的表记录

1 代码

# -*- coding: UTF-8 -*-
import MySQLdb
from Notice import MyFrame3
from ReadCode import ReadCode
class Check_Document():
    # 打开数据库连接
    def __init__(self,table):
        readcode=ReadCode()
        Line=readcode.return_line()
        # 打开数据库连接
        db = MySQLdb.connect("localhost", "%s"%Line[0]
                             , "%s"%Line[1], "%s"%Line[2])
        # 使用cursor()方法获取操作游标
        cursor = db.cursor()
        # SQL 查询语句
        sql="select * from %s"%table
        self.return_result=[]
        try:
            cursor.execute(sql)
            # 获取所有记录列表
            results = cursor.fetchall()
            for row in results:
                for i in range(0, len(row)):
                    self.return_result.append(row[i])
                self.return_result.append('\n')
        except:
            notice=MyFrame3(None,"Error: unable to fecth data")
            notice.Show()
        # 关闭数据库连接
        db.close()
    def return_result(self):
        return self.return_result
if __name__=='__main__':
    check_database=Check_Document('create_user')
    for i in range(0,len(check_database.return_result)):
        print check_database.return_result[i]

2 测试结果

D:\Python27\python.exe E:/Python/MySQLControler/Check/Check_Document.py
cakin
meimei
798103175@qq.com
798103176@qq.com

七 查询某个表的表记录窗口

1 代码

# -*- coding: utf-8 -*-
###########################################################################
## Python code generated with wxFormBuilder (version Feb 16 2016)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################
import wx
import wx.xrc
from Check_Database import Check_Database
from Check_Document import Check_Document
###########################################################################
## Class MyFrame25
###########################################################################
class MyFrame25(wx.Frame):
    def __init__(self, parent):
        #框架初始化
        wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString,
                          pos=wx.DefaultPosition,size=wx.Size(783, 665),
                          style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
        #Window的方法
        self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
        #垂直布局控制器
        bSizer2 = wx.BoxSizer(wx.VERTICAL)
        #水平布局控制器
        bSizer3 = wx.BoxSizer(wx.HORIZONTAL)
        #输入表名提示框
        self.m_staticText1 = wx.StaticText(self, wx.ID_ANY, u"请输入想要查询的表名",
                                           wx.DefaultPosition, wx.Size(250, 50), 0)
        self.m_staticText1.Wrap(-1)
        #设置字体
        self.m_staticText1.SetFont(wx.Font(15, 74, 90, 90, False, "Sans"))
        #提示框位于布局器3中
        bSizer3.Add(self.m_staticText1, 0, wx.ALL, 5)
        #用于输入表名
        self.m_textCtrl2 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString,
                                       wx.DefaultPosition, wx.Size(250, 50), 0)
        #表名编辑框位于布局器3中
        bSizer3.Add(self.m_textCtrl2, 0, wx.ALL, 5)
        #确认按钮
        self.m_button1 = wx.Button(self, wx.ID_ANY, u"确定",
                                   wx.DefaultPosition, wx.Size(100, 50), 0)
        #确认按钮位于布局器3中
        bSizer3.Add(self.m_button1, 0, wx.ALL, 5)
        #布局器3位于布局器2中
        bSizer2.Add(bSizer3, 0, wx.EXPAND, 5)
        #布局器4是水平布局器
        bSizer4 = wx.BoxSizer(wx.HORIZONTAL)
        #表名列表,只读,多行
        self.m_textCtrl3 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString,
                                       wx.DefaultPosition, wx.Size(250, 800),
                                       style=wx.TE_MULTILINE|wx.TE_READONLY)
        #表名列表位于布局器4中
        bSizer4.Add(self.m_textCtrl3, 0, wx.ALL, 5)
        #用于显示结果
        self.m_textCtrl4 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString,
                                       wx.DefaultPosition, wx.Size(800, 800),
                                       style=wx.TE_MULTILINE|wx.TE_READONLY)
        #位于布局器4中
        bSizer4.Add(self.m_textCtrl4, 0, wx.ALL, 5)
        #布局器位于布局器2中
        bSizer2.Add(bSizer4, 1, wx.EXPAND, 5)
        #以下3个方法是Window类的方法
        self.SetSizer(bSizer2)
        self.Layout()
        self.Centre(wx.BOTH)
        # 绑定事件
        self.m_button1.Bind(wx.EVT_BUTTON, self.m_button1OnButtonClick)
        ################################################
        #检查数据表实例
        check_database=Check_Database('show tables')
        #显示特定数据库的数据表列表
        show=''
        for i in range(0,len(check_database.return_result)):
            show+=check_database.return_result[i]
        self.m_textCtrl3.SetValue(show)
    def __del__(self):
        pass
    # Virtual event handlers, overide them in your derived class
    def m_button1OnButtonClick(self, event):
        result=''
        #定义数据表结果实例,并显示结果
        check_database = Check_Document('%s'%self.m_textCtrl2.GetValue())
        for i in range(0, len(check_database.return_result)):
            result+=check_database.return_result[i]
        self.m_textCtrl4.SetValue(result)

#编入测试模块
if __name__=='__main__':
    app=wx.App()
    window=MyFrame25(None)
    window.Show()
    app.MainLoop()

2 测试结果

八 数据表列表窗口

1 代码

# -*- coding: utf-8 -*-
###########################################################################
## Python code generated with wxFormBuilder (version Feb 16 2016)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################
import wx
import wx.xrc
from Check_Database import Check_Database
###########################################################################
## Class MyFrame1
###########################################################################
class MyFrame23(wx.Frame):
    def __init__(self, parent):
        #初始化框架
        wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString,
                          pos=wx.DefaultPosition,size=wx.Size(191, 799),
                          style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
        #Window类的方法
        self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
        #布局控制器
        bSizer1 = wx.BoxSizer(wx.VERTICAL)
        #用于显示特定数据库的数据表,多行,只读
        self.m_textCtrl1 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString,
                                       wx.DefaultPosition, wx.Size(300, 1000)
                                       , style=wx.TE_READONLY|wx.TE_MULTILINE)
        #位于布局控制器1中
        bSizer1.Add(self.m_textCtrl1, 0, wx.ALL, 5)
        #Window类的方法
        self.SetSizer(bSizer1)
        self.Layout()
        self.Centre(wx.BOTH)
        #查询并显示特定数据库的数据表
        check_database=Check_Database('show tables')
        show=''
        for i in range(0,len(check_database.return_result)):
            show+=check_database.return_result[i]
        self.m_textCtrl1.SetValue(show)
    def __del__(self):
        pass

#编入测试模块
if __name__=='__main__':
    app=wx.App()
    window=MyFrame23(None)
    window.Show()
    app.MainLoop()

2 测试结果

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值