In this Python PyQt5 Tutorial we want to learn about Python PyQt5 MySQL Database Insert Data, and we are using mysql connector for this purpose, in the previous lesson we have learned how you can create database using Python PyQt5 GUI Application, now you need to create a table in the database and my table name is users.
Now open your Qt Designer, you can just write pyqt5designer in your terminal, after opening the Qt Designer you need to create Widget window. now we add widgets in Qt Designer.
- Add HBoxLayout and in the HBoxLayout add a label and a lineedit
- Add another HBoxLayout, and in the HBoxLayout add label and lineedit
- Also you need to add a label and button at the end and make the window layout vertically
- You need to add a vertical spacer between your lineedit and buttons
This is our design.
After completing the design you need to save the .ui file, iam going to name it insert.ui, now copy the file and paste it in the Scripts folder of your Python installation, because we want to convert our ui file in to python file and for converting you need to use pyuic5 module. pyuic5 module is located in the Scripts folder of your Python installation, run this command for converting in your terminal.
1 |
pyuic5 insert.ui -o insert.py -x |
So this is the converted file, also we have brought some changes to this file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# -*- coding: utf-8 -*- # Form implementation generated from reading # ui file 'insert.ui' # # Created by: PyQt5 UI code generator 5.15.1 # # WARNING: Any manual changes made to this file # will be lost when pyuic5 is # run again. Do not edit this file unless you know # what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets import mysql.connector as mc class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(507, 224) self.verticalLayout = QtWidgets.QVBoxLayout(Form) self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.label = QtWidgets.QLabel(Form) self.label.setObjectName("label") self.horizontalLayout.addWidget(self.label) self.lineEditEmail = QtWidgets.QLineEdit(Form) self.lineEditEmail.setObjectName("lineEditEmail") self.horizontalLayout.addWidget(self.lineEditEmail) self.verticalLayout.addLayout(self.horizontalLayout) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label_2 = QtWidgets.QLabel(Form) self.label_2.setObjectName("label_2") self.horizontalLayout_2.addWidget(self.label_2) self.lineEditPassword = QtWidgets.QLineEdit(Form) self.lineEditPassword.setEchoMode(QtWidgets.QLineEdit.Password) self.lineEditPassword.setObjectName("lineEditPassword") self.horizontalLayout_2.addWidget(self.lineEditPassword) self.verticalLayout.addLayout(self.horizontalLayout_2) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setObjectName("pushButton") #connected the pushbutton in here self.pushButton.clicked.connect(self.insert_data) self.verticalLayout.addWidget(self.pushButton) self.labelResult = QtWidgets.QLabel(Form) font = QtGui.QFont() font.setPointSize(14) font.setBold(True) font.setWeight(75) self.labelResult.setFont(font) self.labelResult.setText("") self.labelResult.setObjectName("labelResult") self.verticalLayout.addWidget(self.labelResult) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def insert_data(self): try: mydb = mc.connect( host="localhost", user="root", password="", database="pyqt5" ) mycursor = mydb.cursor() email = self.lineEditEmail.text() password = self.lineEditPassword.text() query = "INSERT INTO users (email, password) VALUES (%s, %s)" value = (email, password) mycursor.execute(query, value) mydb.commit() self.labelResult.setText("Data Inserted ") except mc.Error as e: self.labelResult.setText("Error Inserting Data") def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.label.setText(_translate("Form", "Email:")) self.label_2.setText(_translate("Form", "Password:")) self.pushButton.setText(_translate("Form", "Insert Data")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) |
We have added one method for inserting data to the database, first we have connected our application with the wamp server using mysql connector, after that we need to create the object of cursor, also we need to get the value from the QLineEdit, at the end we need to execute the query.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
def insert_data(self): try: mydb = mc.connect( host="localhost", user="root", password="", database="pyqt5" ) mycursor = mydb.cursor() email = self.lineEditEmail.text() password = self.lineEditPassword.text() query = "INSERT INTO users (email, password) VALUES (%s, %s)" value = (email, password) mycursor.execute(query, value) mydb.commit() self.labelResult.setText("Data Inserted ") except mc.Error as e: self.labelResult.setText("Error Inserting Data") |
Also we have connected our QPushButton clicked signal with this method.
1 |
self.pushButton.clicked.connect(self.insert_data) |
So now run the code and give the email and password and click on insert data button.
If you see your wamp server, you have the inserted data.