def executeevent(self): se=self.selectentry.text() fe=self.fromentry.text() we=self.whereentry.text() gbe=self.groupbyentry.text() if we=="": QMessageBox.about(self, "Alert", "Fill all required entries.") elif se=="": QMessageBox.about(self, "Alert", "Fill all required entries.") elif fe=="": QMessageBox.about(self, "Alert", "Fill all required entries.") elif gbe=="": QMessageBox.about(self, "Alert", "Fill all required entries.") else: if we=="-": query="SELECT "+se+" FROM "+fe+" GROUP BY "+gbe+";" else: query="SELECT "+se+" FROM "+fe+" WHERE "+we+" GROUP BY "+gbe+";" cn=sqlite3.connect(self.dbname+'.db') crob=cn.cursor() crob.execute(query) result=crob.fetchall() cn.commit() cn.close() self.window = QtWidgets.QMainWindow() self.ui = Ui_display() self.ui.setupUi(self.window,result) self.window.show() self.groupbyclause.close()
def executeevent(self): se = self.selectentry.text() fe = self.fromentry.text() le = self.limitentry.text() if le == "": QMessageBox.about(self, "Alert", "Fill all required entries.") elif se == "": QMessageBox.about(self, "Alert", "Fill all required entries.") elif fe == "": QMessageBox.about(self, "Alert", "Fill all required entries.") else: query = "SELECT " + se + " FROM " + fe + " LIMIT " + le + ";" cn = sqlite3.connect(self.dbname + '.db') crob = cn.cursor() crob.execute(query) result = crob.fetchall() cn.commit() cn.close() self.window = QtWidgets.QMainWindow() self.ui = Ui_display() self.ui.setupUi(self.window, result) self.window.show() self.limitclause.close()
class Ui_limitclause(QWidget): dbname = "" limitclause = None def setupUi(self, limitclause, dbname): limitclause.setObjectName("limitclause") limitclause.resize(454, 222) limitclause.setStyleSheet("background-color: rgb(255, 255, 191);") self.centralwidget = QtWidgets.QWidget(limitclause) self.centralwidget.setObjectName("centralwidget") self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 0, 431, 161)) self.gridLayoutWidget.setObjectName("gridLayoutWidget") self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setObjectName("gridLayout") self.fromentry = QtWidgets.QLineEdit(self.gridLayoutWidget) self.fromentry.setStyleSheet("background-color: rgb(255, 255, 255);\n" "font: 10pt \"Comic Sans MS\";") self.fromentry.setObjectName("fromentry") self.gridLayout.addWidget(self.fromentry, 1, 2, 1, 1) self.label_2 = QtWidgets.QLabel(self.gridLayoutWidget) self.label_2.setStyleSheet("font: 10pt \"Comic Sans MS\";") self.label_2.setObjectName("label_2") self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) self.label = QtWidgets.QLabel(self.gridLayoutWidget) self.label.setStyleSheet("font: 10pt \"Comic Sans MS\";") self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.selectentry = QtWidgets.QLineEdit(self.gridLayoutWidget) self.selectentry.setStyleSheet( "background-color: rgb(255, 255, 255);\n" "font: 10pt \"Comic Sans MS\";") self.selectentry.setObjectName("selectentry") self.gridLayout.addWidget(self.selectentry, 0, 2, 1, 1) self.limitentry = QtWidgets.QLineEdit(self.gridLayoutWidget) self.limitentry.setStyleSheet("background-color: rgb(255, 255, 255);\n" "font: 10pt \"Comic Sans MS\";") self.limitentry.setObjectName("limitentry") self.gridLayout.addWidget(self.limitentry, 2, 2, 1, 1) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) self.gridLayout.addItem(spacerItem, 0, 1, 1, 1) self.label_4 = QtWidgets.QLabel(self.gridLayoutWidget) self.label_4.setStyleSheet("font: 10pt \"Comic Sans MS\";") self.label_4.setObjectName("label_4") self.gridLayout.addWidget(self.label_4, 2, 0, 1, 1) self.execute = QtWidgets.QPushButton(self.centralwidget) self.execute.setGeometry(QtCore.QRect(10, 190, 75, 23)) self.execute.setStyleSheet("background-color: rgb(255, 255, 255);\n" "font: 10pt \"Comic Sans MS\";") self.execute.setObjectName("execute") self.reset = QtWidgets.QPushButton(self.centralwidget) self.reset.setGeometry(QtCore.QRect(370, 190, 75, 23)) self.reset.setStyleSheet("background-color: rgb(255, 255, 255);\n" "font: 10pt \"Comic Sans MS\";") self.reset.setObjectName("reset") self.line = QtWidgets.QFrame(self.centralwidget) self.line.setGeometry(QtCore.QRect(10, 160, 431, 20)) self.line.setFrameShape(QtWidgets.QFrame.HLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") limitclause.setCentralWidget(self.centralwidget) self.retranslateUi(limitclause) QtCore.QMetaObject.connectSlotsByName(limitclause) limitclause.setFixedSize(454, 222) self.limitclause = limitclause self.dbname = dbname self.selectentry.setFocus() self.reset.clicked.connect(self.resetevent) self.execute.clicked.connect(self.executeevent) def resetevent(self): self.selectentry.setText("") self.fromentry.setText("") self.limitentry.setText("") self.selectentry.setFocus() def executeevent(self): se = self.selectentry.text() fe = self.fromentry.text() le = self.limitentry.text() if le == "": QMessageBox.about(self, "Alert", "Fill all required entries.") elif se == "": QMessageBox.about(self, "Alert", "Fill all required entries.") elif fe == "": QMessageBox.about(self, "Alert", "Fill all required entries.") else: query = "SELECT " + se + " FROM " + fe + " LIMIT " + le + ";" cn = sqlite3.connect(self.dbname + '.db') crob = cn.cursor() crob.execute(query) result = crob.fetchall() cn.commit() cn.close() self.window = QtWidgets.QMainWindow() self.ui = Ui_display() self.ui.setupUi(self.window, result) self.window.show() self.limitclause.close() def retranslateUi(self, limitclause): _translate = QtCore.QCoreApplication.translate limitclause.setWindowTitle(_translate("limitclause", "LIMIT")) self.label_2.setText(_translate("limitclause", "FROM")) self.label.setText(_translate("limitclause", "SELECT")) self.label_4.setText(_translate("limitclause", "LIMIT")) self.execute.setText(_translate("limitclause", "Execute")) self.reset.setText(_translate("limitclause", "Reset"))
def execevent(self): sw = '' fw = '' query = str(self.query.toPlainText()) query = query.strip() query1 = query.lower() f = 0 q = '' count = 0 cn = sqlite3.connect(self.dbname + '.db') crob = cn.cursor() try: crob.execute(query) except: f = 1 QMessageBox.about(self, "Alert", "Some Error Occured.") cn.commit() cn.close() if f == 0: QMessageBox.about(self, "Message", "Database Action Successfully Executed.") self.query.setText("") self.query.setFocus() for ch in query1: if ch != ' ': q = q + ch else: count += 1 if count == 1: fw = q q = q + ' ' if count == 2: sw = q break if sw == 'create table': cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() start = query1.index('table') + 6 end = query1.index('(') tn = query[start:end] crob.execute( "INSERT INTO TName(tname,dbname,query)VALUES(?,?,?);", (tn, self.dbname, query)) cn.commit() cn.close() elif sw == 'drop table': cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() start = query1.index('table') + 6 tn = query[start:] crob.execute("DELETE FROM TName WHERE tname=? AND dbname=?;", (tn, self.dbname)) cn.commit() cn.close() elif sw == 'create view': cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() start = query1.index('view') + 5 end = query1.index('as') - 1 tn = query[start:end] crob.execute("INSERT INTO VName(vname,dbname)VALUES(?,?);", (tn, self.dbname)) cn.commit() cn.close() elif sw == 'drop view': cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() start = query1.index('view') + 5 tn = query[start:] crob.execute("DELETE FROM VName WHERE vname=? AND dbname=?;", (tn, self.dbname)) cn.commit() cn.close() elif sw == 'alter table': if query1.find('rename') > -1: start = query1.index('table') + 6 end = query1.index('rename') - 1 tn = query[start:end] start = query1.index('to') + 3 ntn = query[start:] cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() crob.execute("SELECT * FROM TName") record = crob.fetchall() for entry in record: tname = str(entry[0]) dbn = str(entry[1]) if tname == tn and dbn == self.dbname: q = str(entry[2]) crob.execute( "UPDATE TName SET tname=? WHERE dbname=? AND query=?;", (ntn, self.dbname, q)) cn.commit() cn.close() start = q.index('(') qu = q[start:] q = "CREATE TABLE " + ntn + qu cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() crob.execute( "UPDATE TName SET query=? WHERE tname=? AND dbname=?;", (q, ntn, self.dbname)) cn.commit() cn.close() if query1.find('add') > -1: start = query1.index('table') + 6 end = query1.index('add') - 1 tn = query[start:end] cn = sqlite3.connect(self.dbname + '.db') crob = cn.cursor() sql = "SELECT sql FROM sqlite_master WHERE name='" + tn + "';" crob.execute(sql) result = crob.fetchone() for record in result: print(record) cn1 = sqlite3.connect('sqlgenerator.db') crob1 = cn1.cursor() crob1.execute( "UPDATE TName SET query=? WHERE tname=? AND dbname=?", (record, tn, self.dbname)) cn1.commit() cn1.close() cn.commit() cn.close() elif fw == 'select': cn = sqlite3.connect(self.dbname + '.db') crob = cn.cursor() crob.execute(query) result = crob.fetchall() cn.commit() cn.close() self.window = QtWidgets.QMainWindow() self.ui = Ui_display() self.ui.setupUi(self.window, result) self.window.show() self.querybrowser.close() elif fw == 'insert' or fw == 'delete' or fw == 'update': f = 0 else: QMessageBox.about( self, "Alert", "Action NOT supported by the Application. \nThis modification may not be seen in the application." )
class Ui_querybrowser(QWidget): dbname = '' querybrowser = None def setupUi(self, querybrowser, dn): querybrowser.setObjectName("querybrowser") querybrowser.resize(536, 282) querybrowser.setStyleSheet("background-color: rgb(218, 218, 218);\n" "") self.centralwidget = QtWidgets.QWidget(querybrowser) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(10, 10, 111, 31)) font = QtGui.QFont() font.setFamily("Comic Sans MS") font.setPointSize(12) font.setBold(True) font.setItalic(False) font.setWeight(75) self.label.setFont(font) self.label.setObjectName("label") self.query = QtWidgets.QTextEdit(self.centralwidget) self.query.setGeometry(QtCore.QRect(20, 50, 491, 151)) self.query.setStyleSheet("background-color: rgb(255, 255, 255);\n" "font: 9pt \"Comic Sans MS\";") self.query.setObjectName("query") self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.horizontalLayoutWidget.setGeometry(QtCore.QRect(19, 220, 491, 41)) self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") self.horizontalLayout = QtWidgets.QHBoxLayout( self.horizontalLayoutWidget) self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.horizontalLayout.setObjectName("horizontalLayout") self.exec = QtWidgets.QPushButton(self.horizontalLayoutWidget) self.exec.setStyleSheet("background-color: rgb(255, 255, 255);\n" "font: 10pt \"Comic Sans MS\";") self.exec.setObjectName("exec") self.horizontalLayout.addWidget(self.exec) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.reset = QtWidgets.QPushButton(self.horizontalLayoutWidget) self.reset.setStyleSheet("background-color: rgb(255, 255, 255);\n" "font: 10pt \"Comic Sans MS\";") self.reset.setObjectName("reset") self.horizontalLayout.addWidget(self.reset) querybrowser.setCentralWidget(self.centralwidget) self.retranslateUi(querybrowser) QtCore.QMetaObject.connectSlotsByName(querybrowser) self.dbname = dn self.querybrowser = querybrowser querybrowser.setFixedSize(536, 282) self.reset.clicked.connect(self.resetevent) self.exec.clicked.connect(self.execevent) QMessageBox.about( self, "Message", "Only provide actions supported by the GUI to avoid errors.") def resetevent(self): self.query.setText("") self.query.setFocus() def execevent(self): sw = '' fw = '' query = str(self.query.toPlainText()) query = query.strip() query1 = query.lower() f = 0 q = '' count = 0 cn = sqlite3.connect(self.dbname + '.db') crob = cn.cursor() try: crob.execute(query) except: f = 1 QMessageBox.about(self, "Alert", "Some Error Occured.") cn.commit() cn.close() if f == 0: QMessageBox.about(self, "Message", "Database Action Successfully Executed.") self.query.setText("") self.query.setFocus() for ch in query1: if ch != ' ': q = q + ch else: count += 1 if count == 1: fw = q q = q + ' ' if count == 2: sw = q break if sw == 'create table': cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() start = query1.index('table') + 6 end = query1.index('(') tn = query[start:end] crob.execute( "INSERT INTO TName(tname,dbname,query)VALUES(?,?,?);", (tn, self.dbname, query)) cn.commit() cn.close() elif sw == 'drop table': cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() start = query1.index('table') + 6 tn = query[start:] crob.execute("DELETE FROM TName WHERE tname=? AND dbname=?;", (tn, self.dbname)) cn.commit() cn.close() elif sw == 'create view': cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() start = query1.index('view') + 5 end = query1.index('as') - 1 tn = query[start:end] crob.execute("INSERT INTO VName(vname,dbname)VALUES(?,?);", (tn, self.dbname)) cn.commit() cn.close() elif sw == 'drop view': cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() start = query1.index('view') + 5 tn = query[start:] crob.execute("DELETE FROM VName WHERE vname=? AND dbname=?;", (tn, self.dbname)) cn.commit() cn.close() elif sw == 'alter table': if query1.find('rename') > -1: start = query1.index('table') + 6 end = query1.index('rename') - 1 tn = query[start:end] start = query1.index('to') + 3 ntn = query[start:] cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() crob.execute("SELECT * FROM TName") record = crob.fetchall() for entry in record: tname = str(entry[0]) dbn = str(entry[1]) if tname == tn and dbn == self.dbname: q = str(entry[2]) crob.execute( "UPDATE TName SET tname=? WHERE dbname=? AND query=?;", (ntn, self.dbname, q)) cn.commit() cn.close() start = q.index('(') qu = q[start:] q = "CREATE TABLE " + ntn + qu cn = sqlite3.connect('sqlgenerator.db') crob = cn.cursor() crob.execute( "UPDATE TName SET query=? WHERE tname=? AND dbname=?;", (q, ntn, self.dbname)) cn.commit() cn.close() if query1.find('add') > -1: start = query1.index('table') + 6 end = query1.index('add') - 1 tn = query[start:end] cn = sqlite3.connect(self.dbname + '.db') crob = cn.cursor() sql = "SELECT sql FROM sqlite_master WHERE name='" + tn + "';" crob.execute(sql) result = crob.fetchone() for record in result: print(record) cn1 = sqlite3.connect('sqlgenerator.db') crob1 = cn1.cursor() crob1.execute( "UPDATE TName SET query=? WHERE tname=? AND dbname=?", (record, tn, self.dbname)) cn1.commit() cn1.close() cn.commit() cn.close() elif fw == 'select': cn = sqlite3.connect(self.dbname + '.db') crob = cn.cursor() crob.execute(query) result = crob.fetchall() cn.commit() cn.close() self.window = QtWidgets.QMainWindow() self.ui = Ui_display() self.ui.setupUi(self.window, result) self.window.show() self.querybrowser.close() elif fw == 'insert' or fw == 'delete' or fw == 'update': f = 0 else: QMessageBox.about( self, "Alert", "Action NOT supported by the Application. \nThis modification may not be seen in the application." ) def retranslateUi(self, querybrowser): _translate = QtCore.QCoreApplication.translate querybrowser.setWindowTitle( _translate("querybrowser", "Query Execution")) self.label.setText(_translate("querybrowser", " SQL Query:")) self.exec.setText(_translate("querybrowser", "Execute")) self.reset.setText(_translate("querybrowser", "Reset"))
class Ui_whereclause(QWidget): dbname = "" whereclause = None def setupUi(self, whereclause, dbname): whereclause.setObjectName("whereclause") whereclause.resize(403, 283) whereclause.setStyleSheet("background-color: rgb(255, 255, 191);") self.centralwidget = QtWidgets.QWidget(whereclause) self.centralwidget.setObjectName("centralwidget") self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 0, 381, 211)) self.gridLayoutWidget.setObjectName("gridLayoutWidget") self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setObjectName("gridLayout") self.fromlabel = QtWidgets.QLabel(self.gridLayoutWidget) self.fromlabel.setStyleSheet("font: 75 10pt \"Comic Sans MS\";") self.fromlabel.setObjectName("fromlabel") self.gridLayout.addWidget(self.fromlabel, 1, 0, 1, 1) self.whereentry = QtWidgets.QLineEdit(self.gridLayoutWidget) self.whereentry.setStyleSheet("font: 75 10pt \"Comic Sans MS\";\n" "background-color: rgb(255, 255, 255);") self.whereentry.setObjectName("whereentry") self.gridLayout.addWidget(self.whereentry, 2, 2, 1, 1) self.selectlabel = QtWidgets.QLabel(self.gridLayoutWidget) self.selectlabel.setStyleSheet("font: 75 10pt \"Comic Sans MS\";") self.selectlabel.setObjectName("selectlabel") self.gridLayout.addWidget(self.selectlabel, 0, 0, 1, 1) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) self.gridLayout.addItem(spacerItem, 0, 1, 1, 1) self.wherelabel = QtWidgets.QLabel(self.gridLayoutWidget) self.wherelabel.setStyleSheet("font: 75 10pt \"Comic Sans MS\";") self.wherelabel.setObjectName("wherelabel") self.gridLayout.addWidget(self.wherelabel, 2, 0, 1, 1) self.fromentry = QtWidgets.QLineEdit(self.gridLayoutWidget) self.fromentry.setStyleSheet("font: 75 10pt \"Comic Sans MS\";\n" "background-color: rgb(255, 255, 255);") self.fromentry.setObjectName("fromentry") self.gridLayout.addWidget(self.fromentry, 1, 2, 1, 1) self.selectentry = QtWidgets.QLineEdit(self.gridLayoutWidget) self.selectentry.setStyleSheet("font: 75 10pt \"Comic Sans MS\";\n" "background-color: rgb(255, 255, 255);") self.selectentry.setObjectName("selectentry") self.gridLayout.addWidget(self.selectentry, 0, 2, 1, 1) self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 230, 381, 41)) self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") self.horizontalLayout = QtWidgets.QHBoxLayout( self.horizontalLayoutWidget) self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.horizontalLayout.setObjectName("horizontalLayout") self.execute = QtWidgets.QPushButton(self.horizontalLayoutWidget) self.execute.setStyleSheet("background-color: rgb(255, 255, 255);\n" "font: 75 12pt \"Comic Sans MS\";") self.execute.setObjectName("execute") self.horizontalLayout.addWidget(self.execute) spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem1) self.reset = QtWidgets.QPushButton(self.horizontalLayoutWidget) self.reset.setStyleSheet("background-color: rgb(255, 255, 255);\n" "font: 75 12pt \"Comic Sans MS\";") self.reset.setObjectName("reset") self.horizontalLayout.addWidget(self.reset) self.line = QtWidgets.QFrame(self.centralwidget) self.line.setGeometry(QtCore.QRect(17, 200, 371, 20)) self.line.setFrameShape(QtWidgets.QFrame.HLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") whereclause.setCentralWidget(self.centralwidget) self.retranslateUi(whereclause) QtCore.QMetaObject.connectSlotsByName(whereclause) whereclause.setFixedSize(403, 283) self.whereclause = whereclause self.dbname = dbname self.selectentry.setFocus() self.reset.clicked.connect(self.resetevent) self.execute.clicked.connect(self.executeevent) def resetevent(self): self.selectentry.setText("") self.fromentry.setText("") self.whereentry.setText("") self.selectentry.setFocus() def executeevent(self): se = self.selectentry.text() fe = self.fromentry.text() we = self.whereentry.text() if we == "": QMessageBox.about(self, "Alert", "Fill all required entries.") elif se == "": QMessageBox.about(self, "Alert", "Fill all required entries.") elif fe == "": QMessageBox.about(self, "Alert", "Fill all required entries.") else: query = "SELECT " + se + " FROM " + fe + " WHERE " + we + ";" cn = sqlite3.connect(self.dbname + '.db') crob = cn.cursor() crob.execute(query) result = crob.fetchall() cn.commit() cn.close() self.window = QtWidgets.QMainWindow() self.ui = Ui_display() self.ui.setupUi(self.window, result) self.window.show() self.whereclause.close() def retranslateUi(self, whereclause): _translate = QtCore.QCoreApplication.translate whereclause.setWindowTitle(_translate("whereclause", "WHERE")) self.fromlabel.setText(_translate("whereclause", "FROM")) self.selectlabel.setText(_translate("whereclause", "SELECT")) self.wherelabel.setText(_translate("whereclause", "WHERE")) self.execute.setText(_translate("whereclause", "Execute")) self.reset.setText(_translate("whereclause", "Reset"))