一 主界面
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
[email protected]
[email protected]
七 查询某个表的表记录窗口
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 测试结果