栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python编写MySQL数据库查询/操作软件代码

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python编写MySQL数据库查询/操作软件代码

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
import PySide2
import os
import time
import xlrd
import MySQLdb
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QTextEdit, QApplication
说明="说明:n1.最多可增加100个库,每个库最多100个表,100字段。n2.初始数据库密码为aa1234567。n3.输入路径时一定不可以手动输入,要从目录中选择。n4.增删文件后需等到窗口关闭后才能继续操作,否则容易卡。n6.若新存入表名字与旧表冲突,则会覆盖原来的表。"
'''最多100个库

访问数据库后抛出错误
提交后重新读取数据库
植入表返回判断,若不存在退出
'''
''''''
Database=[0 for i in range(100)]
CurrentDatabase=0
Column=[0 for i in range(100)]
Table=[0 for i in range(100)]
CurrentTable='--请选择表格--'
CurrentTableCreateNew='--请选择表格--'
CurrentDatabaseCreateNew='--请选择库--'
CurrentDatabaseDelete='--请选择库--'
CurrentTableDelete='--请选择表格--'
CurrentDatabaseChoose='--请选择库--'
CurrentTableChoose='--请选择表格--'
#w=0

密码="aa1234567"
def 输出矩阵结果(矩阵):
    print(len(矩阵))
    global w,Column
    输出语句="**************************************************查询字段结果**************************************************n"
    i=0
    print(Column)
    for item in Column:
                if item!=0:
                    输出语句=输出语句+"("+str(i)+")"+item#"n"
                    i=i+1
    print(i)
    输出语句=输出语句+"n"
    for j in range(0,len(矩阵)):
        for s in range(0,i):
            输出语句=输出语句+"("+str(s)+")"+矩阵[j][s]#"n"
        输出语句=输出语句+"n"
    输出语句=输出语句+ "查询到数据"+str(len(矩阵))+ "条n"
    输出语句=输出语句+"****************************************************************************************************************n"    
    输出任意语句(输出语句)    
    
def 输出任意语句(输出语句):
    global w
    w.text_edit.append(输出语句)
    #w.text_edit.setText(输出语句)


def 查询库():
    global 密码
    db = MySQLdb.connect("localhost", "root", 密码, charset='utf8' )
    #db = MySQLdb.connect("localhost", "root", "aa1234567", "电子工程学院研究生2021级", charset='utf8' )
    cursor = db.cursor()
    cursor.execute("show databases")
    db.commit()
    data = cursor.fetchall()
    m=[]
    for i in range(0,len(data)):
        if data[i][0]!='information_schema' and data[i][0]!='performance_schema'and data[i][0]!='mysql'and data[i][0]!='sys':
            m.append(data[i][0])
    print(m)
    db.close()
    return m
    # 关闭数据库连接
    
def 查询表或字段(库,执行语句):
    global 密码
    db = MySQLdb.connect("localhost", "root", 密码,库, charset='utf8' )
    #db = MySQLdb.connect("localhost", "root", "aa1234567", "电子工程学院研究生2021级", charset='utf8' ) 
    cursor = db.cursor()
    cursor.execute(执行语句)
    db.commit()
    data = cursor.fetchall()
    print(data)
    db.close()
    return data
def ShowDatabase():
    global Database
    global 密码
    # 打开数据库连接
    try:
        db = MySQLdb.connect("localhost", "root", 密码, charset='utf8' )
   
    except MySQLdb.Error as e:
        输出任意语句(str(e))
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()

    # 使用execute方法执行SQL语句
    cursor.execute("show databases")

    # 使用 fetchone() 方法获取一条数据
    data = cursor.fetchall()

    print(data)
    # 关闭数据库连接
    print(len(data))
    m=0
    Database=[0 for i in range(100)]
    for i in range(0,len(data)):
        if data[i][0]!='information_schema' and data[i][0]!='performance_schema'and data[i][0]!='mysql'and data[i][0]!='sys':
            Database[m]=data[i]
            m=m+1
        
        
    db.close()
def 退出(self):
    self.close()
def ShowTable(Database):
    global Table
    global 密码
    db = MySQLdb.connect("localhost", "root", 密码,Database, charset='utf8' )
    cursor = db.cursor()
    cursor.execute("show tables")
    data = cursor.fetchall()
    print(data)
    Table=[0 for i in range(100)]
    for i in range(0,len(data)):
        Table[i]=data[i]
    db.close()
def ShowColumn(Database,Table):
    global Column
    global 密码
    db = MySQLdb.connect("localhost", "root", 密码,Database ,charset='utf8' )
    cursor = db.cursor()
    aa="show full columns from "+"`"+Table+"`"
    cursor.execute(aa)
    data = cursor.fetchall()
    Column=[0 for i in range(100)]
    for i in range(0,len(data)):
        Column[i]=data[i][0]
    db.close()
def 删除库(库):
    global 密码
    db = MySQLdb.connect("localhost", "root", 密码, charset='utf8' )
    cursor = db.cursor()
    aa="drop database if exists "+"`"+库+"`"
    cursor.execute(aa)
    data = cursor.fetchall()
    print(data)
    # 关闭数据库连接
    db.close()
    time.sleep(2)
def 删除表(库,表):
    global 密码
    db = MySQLdb.connect("localhost", "root",密码, 库,charset='utf8' )
    cursor = db.cursor()
    aa="drop table if exists "+"`"+表+"`"
    cursor.execute(aa)
    data = cursor.fetchall()
    print(data)
    # 关闭数据库连接
    db.close()
    time.sleep(2)
    
def 创建库(库):    
    global 密码
    db = MySQLdb.connect("localhost", "root",密码, charset='utf8' )
    cursor = db.cursor()
    print(库)
    aa="CREATE DATABASE IF NOT EXISTS "+"`"+库+"`"
    cursor.execute(aa)
    data = cursor.fetchall()
    print(data)
# 关闭数据库连接
    db.close()
    time.sleep(2)
def 创建表(文件路径,database):
    global 密码
    表名=文件路径.split("/")[-1][:-5]
    readbook = xlrd.open_workbook(文件路径)#抓取错误
    sheet = readbook.sheet_by_index(0)
    删除表(database,表名)
    db = MySQLdb.connect("localhost", "root", 密码,database , charset='utf8' )
    #捕捉错误
    cursor = db.cursor()


    



    aa="CREATE TABLE IF NOT EXISTS "+"`"+表名+"`("    
    for i in range(0,sheet.ncols-1):
        aa=aa+"`"+str(sheet.cell(0, i).value)+"`"+" VARCHAr(200),"
        
    aa=aa+"`"+str(sheet.cell(0, sheet.ncols-1).value)+"`"+" VARCHAr(200)"
    aa=aa+")ENGINE=InnoDB DEFAULT CHARSET=utf8"
    
    print(aa)
    cursor.execute(aa)
    data = cursor.fetchall()
    
    print(data)
    #返回判断,若不存在退出

    
    cc="insert into "+"`"+表名+"` ("
    for i in range(0,sheet.ncols-1):
        cc=cc+"`"+str(sheet.cell(0, i).value)+"`,"
    cc=cc+"`"+str(sheet.cell(0, sheet.ncols-1).value)+"`) values ("
    for j in range(1,sheet.nrows):
        mm=cc
        for i in range(0,sheet.ncols-1):
            mm=mm+"'"+str(sheet.cell(j, i).value)+"',"
        mm=mm+"'"+str(sheet.cell(j, sheet.ncols-1).value)+"')"
        print(mm)
        
        #time.sleep(0.8)
        cursor = db.cursor()
        cursor.execute(mm)
        db.commit()
        data = cursor.fetchall()
        print(data)

    
    db.close()



import sys
try:
    from PyQt5.QtCore import Qt
    from PyQt5.QtWidgets import QTextEdit, QApplication
except ImportError:
    from PySide2.QtGui import QIntValidator, QDoubleValidator, QRegExpValidator
    from PySide2.QtCore import QRegExp 
    import PySide2.QtWidgets
    from PySide2.QtCore import Qt
    from PySide2.QtWidgets import QComboBox ,QTextEdit,QFrame,QPlainTextEdit,QFileDialog, QApplication,QWidget,QMessageBox, QDesktopWidget,QPushButton, QHBoxLayout, QVBoxLayout, QLabel, QLineEdit 
 
class ChildWindow0(QFrame,QWidget):
    def __init__(self):
        super(ChildWindow0, self).__init__()
        global Database
        global Table
        self.setWindowTitle("增删数据")
        self.fra = QFrame(self)
        self.fra.resize(500,220)
        #self.fra.setStyleSheet("background-color:green")

        self.fra.setLineWidth(7)                          #设置外线宽度
        self.fra.setMidLineWidth(5)                       #设置中线宽度
        self.fra.setFrameShadow(QFrame.Raised)            #设置阴影效果:凸起
        self.fra.setFrameShape(QFrame.Panel)


        self.Label= QLabel("新建表格", self)
        self.Label.move(18,18)
        
        self.ButtonChooseFile=QPushButton("浏览", self)
        self.ButtonChooseFile.clicked.connect(self.open_fileManager)
        self.ButtonChooseFile.move(400,60)

        self.catalog = QComboBox(self)
        self.catalog.addItem('--请选择库--')
        for item in Database:
            if item!=0:
                self.catalog.addItem(item[0]) 
        self.catalog.addItem('新建库')
        self.catalog.setGeometry(18, 102, 160, 24)
        self.catalog.currentIndexChanged.connect(self.catalogChanged)  

        #self.catalog1 = QComboBox(self)
        
        self.LeftPlainTextEdit = QLineEdit(self)      #在主对话框上创建一个纯文本编辑框控件
        self.LeftPlainTextEdit.setPlaceholderText("请不要直接输入路径而是选择路径(文件名将作为为表名)")     #设置空内容时的提示文本
        self.LeftPlainTextEdit.resize(360, 24)                  #设置大小
        self.LeftPlainTextEdit.move(18, 60)


        self.LeftPlainTextEdit1 = QLineEdit(self)      #在主对话框上创建一个纯文本编辑框控件
        self.LeftPlainTextEdit1.setPlaceholderText("请输入库名")     #设置空内容时的提示文本
        self.LeftPlainTextEdit1.resize(160, 24)                  #设置大小
        self.LeftPlainTextEdit1.move(200, 102)
        self.LeftPlainTextEdit1.setVisible(False)


        self.LeftPlainTextEdit2 = QLineEdit(self)      #在主对话框上创建一个纯文本编辑框控件
        self.LeftPlainTextEdit2.setPlaceholderText("请输入插入xlsx文件行数")     #设置空内容时的提示文本
        self.LeftPlainTextEdit2.resize(160, 24)                  #设置大小
        self.LeftPlainTextEdit2.move(18, 144)
        self.LeftPlainTextEdit2.setVisible(False)

        self.LeftPlainTextEdit3 = QLineEdit(self)      #在主对话框上创建一个纯文本编辑框控件
        self.LeftPlainTextEdit3.setPlaceholderText("请输入插入xlsx文件列数")     #设置空内容时的提示文本
        self.LeftPlainTextEdit3.resize(160, 24)                  #设置大小
        self.LeftPlainTextEdit3.move(200, 144)
        self.LeftPlainTextEdit3.setVisible(False)
 
        self.ButtonCreat=QPushButton("新建表格", self)
        self.ButtonCreat.clicked.connect(self.新建表格)
        self.ButtonCreat.move(400,102)
        
            
        reg = QRegExp('[0-9]{1,7}')
        validator = QRegExpValidator()
        validator.setRegExp(reg)
        self.LeftPlainTextEdit2.setValidator(validator)
        self.LeftPlainTextEdit3.setValidator(validator)
        regEx =QRegExp("^D.*$ ")
        #regEx =QRegExp("\D{1,60}")
        validator1 = QRegExpValidator()
        validator1.setRegExp(regEx)
        self.LeftPlainTextEdit1.setValidator(validator1)
        #self.setContentsMargins(0, 0, 400, 240)
        self.fra1 = QFrame(self)
        self.fra1.resize(500,180)
        #self.fra.setStyleSheet("background-color:green")

        self.fra1.setLineWidth(7)                          #设置外线宽度
        self.fra1.setMidLineWidth(5)                       #设置中线宽度
        self.fra1.setFrameShadow(QFrame.Raised)            #设置阴影效果:凸起
        self.fra1.setFrameShape(QFrame.Panel)
        self.fra1.move(0,220)



        self.Label= QLabel("删除库或表格", self)
        self.Label.move(18,238)


        self.catalog1 = QComboBox(self)
        self.catalog1.addItem('--请选择库--')
        for item in Database:
            if item!=0:
                self.catalog1.addItem(item[0]) 
        self.catalog1.setGeometry(18, 280, 160, 24)
        self.catalog2 = QComboBox(self)
        self.catalog2.addItem('--请选择表格--')
        self.catalog2.setGeometry(18, 322, 160, 24)
        self.catalog2.currentIndexChanged.connect(self.catalogChanged3)
        self.catalog1.currentIndexChanged.connect(self.catalogChanged1)

        self.DeletKu=QPushButton("删除库", self)
        self.DeletKu.clicked.connect(self.删除库按钮)
        self.DeletKu.move(400,280)

        self.DeletKu=QPushButton("删除表", self)
        self.DeletKu.clicked.connect(self.删除表按钮)
        self.DeletKu.move(400,322)
        #self.setStyleSheet("border:1px solid %s" % 0x0fff)

        #self.setStyleSheet("background-color: %s" % 0x0fff)
        #引入子窗口类
        #self.show()
    
    def catalogChanged(self):
        global Table,CurrentDatabaseCreateNew
        cat = self.catalog.currentText()
        self.LeftPlainTextEdit1.setVisible(False)
        if cat == '新建库':
            self.LeftPlainTextEdit1.setVisible(True)
        elif cat =='--请选择库--':
            pass
        else:
            pass
        CurrentDatabaseCreateNew=cat
        
        
    def catalogChanged1(self):
        global Table,CurrentDatabaseDelete
        cat = self.catalog1.currentText()
        if cat =='--请选择库--':
            self.catalog2.clear()
            self.catalog2.addItem('--请选择表格--')
        else:
            ShowTable(cat)
            self.catalog2.clear()
            self.catalog2.addItem('--请选择表格--')
            for item in Table:
                if item!=0:
                    self.catalog2.addItem(item[0])
        CurrentDatabaseDelete=cat
        
    def catalogChanged3(self):
        global CurrentTableDelete
        cat = self.catalog2.currentText()
        CurrentTableDelete=cat
        print(cat)
    def 删除库按钮(self):
        global CurrentDatabaseDelete
        choice = QMessageBox.question(self, '确认', '您确认要删除该库?')
        if choice == QMessageBox.Yes:
            print('确定')
            
            if CurrentDatabaseDelete=='--请选择库--':
                print("还未选择库!")
            else:
                删除库(CurrentDatabaseDelete)
                退出(self)
                
        elif choice == QMessageBox.No:
            print('取消')
    def 删除表按钮(self):
        global CurrentDatabaseDelete,CurrentTableDelete
        choice = QMessageBox.question(self, '确认', '您确认要删除该表格?')
        if choice == QMessageBox.Yes:
            print('确定')
            
            if CurrentTableDelete=='--请选择表格--':
                print("还未选择表格!")
            else:
                删除表(CurrentDatabaseDelete,CurrentTableDelete)
                退出(self)
                
        elif choice == QMessageBox.No:
            print('取消')
    def 新建表格(self):
        global Table,CurrentDatabaseCreateNew
        choice = QMessageBox.question(self, '确认', '您确认要创建表?')
        if choice == QMessageBox.Yes:
            print('确定')
            行数=self.LeftPlainTextEdit2.text()
            列数=self.LeftPlainTextEdit3.text()
            文件路径=self.LeftPlainTextEdit.text()
            if 0:#行数=="0" or 行数==""or 列数=="0" or 列数=="":
                print("行数或列数必须为非空")
            else:
                if 文件路径 =="":
                    print("未选择文件!")
                else:
                    if CurrentDatabaseCreateNew=='--请选择库--':
                        print("未选择库!")
                    else :
                        
                        if CurrentDatabaseCreateNew=='新建库':
                            aa=self.LeftPlainTextEdit1.text()
                            if aa=="":
                                print("未填入库!")
                            else:
                                创建库(aa) 
                                创建表(文件路径,aa)
                                退出(self)
                        else:
                            库=CurrentDatabaseCreateNew
                            创建表(文件路径,CurrentDatabaseCreateNew)
                            退出(self)
                    
                    
        elif choice == QMessageBox.No:
            print('取消')
        
            
            

    def open_fileManager(self):
        filePath, _ = QFileDialog.getOpenFileName(
        self,  # 父窗口对象
        "选择你要上传的文件",  # 标题
        r"d:\",  # 起始目录
        "xlsx类型 (*.xlsx)"  # 选择类型过滤项,过滤内容在括号中
        )
        self.LeftPlainTextEdit.setText(filePath)

class ChildWindow1(QFrame,QWidget):
    def __init__(self):
        super(ChildWindow1, self).__init__()
        
        global Database
        self.setWindowTitle("查询")
        self.fra1 = QFrame(self)
        self.fra1.resize(500,180)
        #self.fra.setStyleSheet("background-color:green")

        self.fra1.setLineWidth(7)                          #设置外线宽度
        self.fra1.setMidLineWidth(5)                       #设置中线宽度
        self.fra1.setFrameShadow(QFrame.Raised)            #设置阴影效果:凸起
        self.fra1.setFrameShape(QFrame.Panel)

        
        self.Label= QLabel("选择库和表", self)
        self.Label.move(18,18)
 

        self.catalog = QComboBox(self)
        self.catalog.addItem('--请选择表格--')
        self.catalog.setGeometry(18, 102, 160, 24)
        self.catalog.currentIndexChanged.connect(self.catalogChanged5)  

        self.catalog4 = QComboBox(self)
        self.catalog4.addItem('--请选择库--')
        for item in Database:
            if item!=0:
                self.catalog4.addItem(item[0]) 
        self.catalog4.setGeometry(18, 60, 160, 24)
        self.catalog4.currentIndexChanged.connect(self.catalogChanged2) 
        #self.catalog1 = QComboBox(self)
        
       
   
            
        #self.setContentsMargins(0, 0, 400, 240)
        
        

        self.fra = QFrame(self)
        self.fra.resize(500,220)
        #self.fra.setStyleSheet("background-color:green")
        self.fra.setLineWidth(7)                          #设置外线宽度
        self.fra.setMidLineWidth(5)                       #设置中线宽度
        self.fra.setFrameShadow(QFrame.Raised)            #设置阴影效果:凸起
        self.fra.setFrameShape(QFrame.Panel)
        self.fra.move(0,180)

        self.Label1= QLabel("选择字段", self)
        self.Label1.move(18,196)
        self.catalog0= QComboBox(self)
        self.catalog0.addItem('--请选择字段1--')
        self.catalog0.setGeometry(18, 236, 160, 24)
        self.catalog1 = QComboBox(self)
        self.catalog1.addItem('--请选择字段2--')
        self.catalog1.setGeometry(18, 280, 160, 24)
        self.catalog2 = QComboBox(self)
        self.catalog2.addItem('--请选择字段3--')
        self.catalog2.setGeometry(18, 322, 160, 24)
        #self.catalog2.currentIndexChanged.connect(self.catalogChanged)



        self.LeftPlainTextEdit1 = QLineEdit(self)      #在主对话框上创建一个纯文本编辑框控件
        self.LeftPlainTextEdit1.setPlaceholderText("请输入字段内容1")     #设置空内容时的提示文本
        self.LeftPlainTextEdit1.resize(160, 24)                  #设置大小
        self.LeftPlainTextEdit1.move(200, 236)
        self.LeftPlainTextEdit2 = QLineEdit(self)      #在主对话框上创建一个纯文本编辑框控件
        self.LeftPlainTextEdit2.setPlaceholderText("请输入字段内容2")     #设置空内容时的提示文本
        self.LeftPlainTextEdit2.resize(160, 24)                  #设置大小
        self.LeftPlainTextEdit2.move(200, 280)
        self.LeftPlainTextEdit3 = QLineEdit(self)      #在主对话框上创建一个纯文本编辑框控件
        self.LeftPlainTextEdit3.setPlaceholderText("请输入字段内容3")     #设置空内容时的提示文本
        self.LeftPlainTextEdit3.resize(160, 24)                  #设置大小
        self.LeftPlainTextEdit3.move(200, 322)

        self.DeletKu=QPushButton("查询", self)
        self.DeletKu.clicked.connect(self.查询)
        self.DeletKu.move(400,322)
        #self.setStyleSheet("border:1px solid %s" % 0x0fff)

        #self.setStyleSheet("background-color: %s" % 0x0fff)
        #引入子窗口类
        #self.show()
    def 查询(self):
        #choice = QMessageBox.question(self, '确认', '您确认要执行该操作?')
        库=self.catalog4.currentText()
        表=self.catalog.currentText()
        if 表=='--请选择表格--'and 库=='--请选择库--':
            查询结果=查询库()
            输出语句="***********查询库结果***********n"
            for h in 查询结果:
                输出语句=输出语句+h+"n"
            输出语句=输出语句+ "********************************n"   
            输出任意语句(输出语句)
        else:
            if 表=='--请选择表格--':
                执行语句="show tables"
                查询结果=查询表或字段(库,执行语句)#查询有哪些表
                输出语句="***********查询表结果***********n"
                for h in 查询结果:
                     输出语句=输出语句+h[0]+"n"
                输出语句=输出语句+ "********************************n"   
                输出任意语句(输出语句)
            else:
                
                if self.catalog0.currentText()=='--请选择字段1--':
                    字段1=0
                else:
                    字段1=self.catalog0.currentText()
                if self.catalog1.currentText()=='--请选择字段2--':
                    字段2=0
                else:
                    字段2=self.catalog1.currentText()
                if self.catalog2.currentText()=='--请选择字段3--':
                    字段3=0
                else:
                    字段3=self.catalog2.currentText()
                if 字段1==0 and 字段2==0 and 字段3==0 :
                    执行语句="select * from "+"`"+表+"`"#查表的所有内容
                    print(执行语句)
                    查询结果=查询表或字段(库,执行语句)
                    输出矩阵结果(查询结果)
                else  :
                    执行语句="select * from "+"`"+表+"`"+" where "
                    if 字段1!=0 and 字段2!=0 and 字段3!=0 :
                        执行语句=执行语句+"`"+字段1+"`="+"'"+self.LeftPlainTextEdit1.text()+"'"+" and "+"`"+字段2+"`="+"'"+self.LeftPlainTextEdit2.text()+"'"+" and "+"`"+字段3+"`="+"'"+self.LeftPlainTextEdit3.text()+"'"
                        查询结果=查询表或字段(库,执行语句)
                        输出矩阵结果(查询结果)
                        return
                    if 字段1!=0 and 字段2!=0 :
                        执行语句=执行语句+"`"+字段1+"`="+"'"+self.LeftPlainTextEdit1.text()+"'"+" and "+"`"+字段2+"`="+"'"+self.LeftPlainTextEdit2.text()+"'"
                        查询结果=查询表或字段(库,执行语句)
                        输出矩阵结果(查询结果)
                        return
                    if 字段2!=0 and 字段3!=0 :
                        执行语句=执行语句+"`"+字段2+"`="+"'"+self.LeftPlainTextEdit2.text()+"'"+" and "+"`"+字段3+"`="+"'"+self.LeftPlainTextEdit3.text()+"'"
                        查询结果=查询表或字段(库,执行语句)
                        输出矩阵结果(查询结果)
                        return
                    if 字段1!=0 and 字段3!=0 :
                        执行语句=执行语句+"`"+字段1+"`="+"'"+self.LeftPlainTextEdit1.text()+"'"+" and "+"`"+字段3+"`="+"'"+self.LeftPlainTextEdit3.text()+"'"
                        查询结果=查询表或字段(库,执行语句)
                        输出矩阵结果(查询结果)
                        return
                    if 字段1!=0:
                        执行语句=执行语句+"`"+字段1+"`="+"'"+self.LeftPlainTextEdit1.text()+"'"
                        查询结果=查询表或字段(库,执行语句)
                        输出矩阵结果(查询结果)
                        return
                    if 字段2!=0:
                        执行语句=执行语句+"`"+字段2+"`="+"'"+self.LeftPlainTextEdit2.text()+"'"
                        查询结果=查询表或字段(库,执行语句)
                        输出矩阵结果(查询结果)
                        return
                    if 字段3!=0:
                        执行语句=执行语句+"`"+字段3+"`="+"'"+self.LeftPlainTextEdit3.text()+"'"
                        查询结果=查询表或字段(库,执行语句)
                        输出矩阵结果(查询结果)
                        return



       
    def catalogChanged2(self):
        global Table,CurrentDatabaseChoose
        self.catalog.currentIndexChanged.connect(self.catalogChanged0) 
        cat = self.catalog4.currentText()
        
        if cat =='--请选择库--':
            self.catalog.clear()
            self.catalog.addItem('--请选择表格--')
        else:
            ShowTable(cat)
            self.catalog.clear()
            self.catalog.addItem('--请选择表格--')
            for item in Table:
                if item!=0:
                    self.catalog.addItem(item[0])
        CurrentDatabaseChoose=cat
        self.catalog.currentIndexChanged.connect(self.catalogChanged5)
    def catalogChanged0(self):
        pass
    def catalogChanged5(self):
        global CurrentDatabaseChoose, CurrentTableChoose,Column
        cat = self.catalog.currentText()
        CurrentTableChoose=cat
        
        if cat =='--请选择表格--' or cat == "":
           self.catalog0.clear()
           self.catalog0.addItem('--请选择字段1--')
           self.catalog1.clear()
           self.catalog1.addItem('--请选择字段2--')
           self.catalog2.clear()
           self.catalog2.addItem('--请选择字段3--')
        else:
           
           ShowColumn(CurrentDatabaseChoose,CurrentTableChoose)
           self.catalog0.clear()
           self.catalog0.addItem('--请选择字段1--')
           self.catalog1.clear()
           self.catalog1.addItem('--请选择字段2--')
           self.catalog2.clear()
           self.catalog2.addItem('--请选择字段3--')
        
           for item in Column:
                if item!=0:
                    self.catalog0.addItem(item)
                    self.catalog1.addItem(item)
                    self.catalog2.addItem(item)

    def open_fileManager(self):
        filePath, _ = QFileDialog.getOpenFileName(
        self,  # 父窗口对象
        "选择你要上传的文件",  # 标题
        r"d:\",  # 起始目录
        "xlsx类型 (*.xlsx)"  # 选择类型过滤项,过滤内容在括号中
        )
        self.LeftPlainTextEdit.setText(filePath)
class ChildWindow2(QFrame,QWidget):
    def __init__(self):
        super(ChildWindow2, self).__init__()
        
        global Database, 说明
        self.Label= QLabel(说明, self)
        self.Label.move(18,18)
        self.setWindowTitle("设置")
        self.fra = QFrame(self)
        self.fra.resize(500,400)
        #self.fra.setStyleSheet("background-color:green")
        self.fra.setLineWidth(7)                          #设置外线宽度
        self.fra.setMidLineWidth(5)                       #设置中线宽度
        self.fra.setFrameShadow(QFrame.Raised)            #设置阴影效果:凸起
        self.fra.setFrameShape(QFrame.Panel)
 
        self.LeftPlainTextEdit3 = QLineEdit(self)      #在主对话框上创建一个纯文本编辑框控件
        self.LeftPlainTextEdit3.setPlaceholderText("请输入连接数据库密码")     #设置空内容时的提示文本
        self.LeftPlainTextEdit3.resize(320, 24)                  #设置大小
        self.LeftPlainTextEdit3.move(18, 322)

        self.DeletKu=QPushButton("确认更改", self)
        self.DeletKu.clicked.connect(self.确认更改)
        self.DeletKu.move(400,322)
        #self.setStyleSheet("border:1px solid %s" % 0x0fff)

        #self.setStyleSheet("background-color: %s" % 0x0fff)
        #引入子窗口类
        #self.show()

    
    def 确认更改(self):
        global 密码
        密码=self.LeftPlainTextEdit3.text()
        QMessageBox.information(self, "更改成功!","更改成功!",
                                    QMessageBox.Ok)
        


class TextEditWidget(QWidget):
    text_edit = None
 
    def __init__(self):
        super().__init__()
        self.init_ui()
  
    def init_ui(self):
        # 垂直布局
        v_box = QVBoxLayout()
        # 建议
        suggest_box = QHBoxLayout()
        self.text_edit = QTextEdit()
        self.text_edit.setPlaceholderText("mysql查询结果")
        suggest_box.addWidget(QLabel("主页"))
        suggest_box.addWidget(self.text_edit)
        suggest_box.setStretch(1, 1)
        v_box.addLayout(suggest_box)
        # 复制、粘贴、清空和提交按钮
        button_box = QHBoxLayout()
        copy_btn = QPushButton("查询")
        copy_btn.clicked.connect(self.childShowFun1)
        paste_btn = QPushButton("增删数据")
        paste_btn.clicked.connect(self.childShowFun0)
        clear_btn = QPushButton("清空")
        clear_btn.clicked.connect(self.clear)
        submit_btn = QPushButton("设置")
        submit_btn.clicked.connect(self.childShowFun2)
        button_box.addWidget(copy_btn)
        button_box.addWidget(paste_btn)
        
        button_box.addWidget(submit_btn)
        button_box.addWidget(clear_btn)
        button_box.addWidget(QLabel(), 1)
        button_box.setContentsMargins(40, 0, 0, 0)
        v_box.addLayout(button_box)
        self.setLayout(v_box)
        # 调整窗口大小
        self.resize(900, 500)
        # 窗口居中
        self.center()
        # 窗口标题
        self.setWindowTitle("数据库统计软件")
        # 显示窗口
        self.show()
    def childShowFun0(self):
        #注意,这里的childwindow不能定义成临时变量,必须定义成主窗口类MainWindow的成员变量,如果是临时变量,即前面没有self,那么子窗口只会闪一下,就会消失
        ShowDatabase()
        self.childwindow1 = ChildWindow0()
        self.childwindow1.show()
        
    def childShowFun1(self):
        #注意,这里的childwindow不能定义成临时变量,必须定义成主窗口类MainWindow的成员变量,如果是临时变量,即前面没有self,那么子窗口只会闪一下,就会消失
        ShowDatabase()
        self.childwindow1 = ChildWindow1()
        self.childwindow1.show()
    def childShowFun2(self):
        #注意,这里的childwindow不能定义成临时变量,必须定义成主窗口类MainWindow的成员变量,如果是临时变量,即前面没有self,那么子窗口只会闪一下,就会消失
        ShowDatabase()
        self.childwindow1 = ChildWindow2()
        self.childwindow1.show()
        
    # 拷贝
    def copy(self):
        text = self.text_edit.toPlainText()
        # 剪切板的文本
        clipboard = QApplication.clipboard()
        clipboard.setText(text)
 
    # 粘贴
    def paste(self):
        # 剪切板的文本
        clipboard = QApplication.clipboard()
        # 以Html的格式输出多行文本框,字体红色,字号6号
        self.text_edit.setHtml(clipboard.text())
 
    # 清空
    def clear(self):
        self.text_edit.clear()
 
    # 提交
    def submit(self):
        text = self.text_edit.toPlainText()
        if text.strip() == "":
            self.text_edit.setFocus()
            QMessageBox.warning(self, "内容为空", 
                                "建议空空如也,请输入你的宝贵意见", 
                                QMessageBox.Ok)
        else:
            QMessageBox.information(self, "提交成功", 
                                    "你的宝贵意见,我们收到了,谢谢你", 
                                    QMessageBox.Ok)
 
    # 实现居中
    def center(self):
        f = self.frameGeometry()
        c = QDesktopWidget().availableGeometry().center()
        f.moveCenter(c)
        self.move(f.topLeft())
 
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = TextEditWidget()
    sys.exit(app.exec_())

数据库以xlsx的格式插入,若字段没有选择,则会查询相应的库或表

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923425.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号