Skip to content

Commit fc7fe5f

Browse files
committed
Updated Section-04 Database Handling
1 parent 514f982 commit fc7fe5f

9 files changed

+310
-94
lines changed

Section-02/02. QPushButton Example.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,6 @@ def create_button(self):
3838

3939

4040

41-
42-
43-
44-
45-
4641
app = QApplication(sys.argv)
4742
Window = Window()
4843
Window.show()

Section-04/InsertingDataDatabaes.py renamed to Section-04/02 Inserting Data into Databaes with UI-02.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
1-
# Form implementation generated from reading ui file 'InsertingDataDatabaes.ui'
2-
#
3-
# Created by: PyQt6 UI code generator 6.4.2
4-
#
5-
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
6-
# run again. Do not edit this file unless you know what you are doing.
7-
8-
91
from PyQt6 import QtCore, QtGui, QtWidgets
102
import mysql.connector as mc
3+
import re
114

125

136
class Ui_Form(object):
@@ -48,6 +41,7 @@ def setupUi(self, Form):
4841
self.label_2.setObjectName("label_2")
4942
self.horizontalLayout_2.addWidget(self.label_2)
5043
self.lineEdit_password = QtWidgets.QLineEdit(parent=Form)
44+
self.lineEdit_password.setMaxLength(8)
5145
self.lineEdit_password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
5246
self.lineEdit_password.setObjectName("lineEdit_password")
5347
self.horizontalLayout_2.addWidget(self.lineEdit_password)
@@ -86,17 +80,32 @@ def insert_data(self):
8680
mycursor = mydb.cursor()
8781
username = self.lineEdit_username.text()
8882
password = self.lineEdit_password.text()
83+
84+
85+
# Password length requirements: Minimum 6 characters, Maximum 6 characters
86+
if len(password) != 8:
87+
self.label_result.setText("Password length must be 8 characters.")
88+
self.label_result.setStyleSheet("color: red")
89+
return
90+
91+
# Password strength requirements: At least 1 digit, 1 uppercase letter, and 1 special character
92+
if not (re.search(r"\d", password) and re.search(r"[A-Z]", password) and re.search(r"[!@#$%^&*()_+{}|:<>?~-]", password)):
93+
self.label_result.setText("Weak password!")
94+
self.label_result.setStyleSheet("color: red")
95+
return
8996

9097
query = "INSERT INTO pyqtusers (username, password) VALUES (%s, %s)"
9198
value = (username, password)
9299

93100
mycursor.execute(query, value)
94-
95101
mydb.commit()
102+
96103
self.label_result.setText("Data Inserted")
104+
self.label_result.setStyleSheet("color: green")
97105

98106
except mc.Error as e:
99107
self.label_result.setText("Error Inserting Data.")
108+
self.label_result.setStyleSheet("color: red")
100109

101110

102111
def retranslateUi(self, Form):
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
# Form implementation generated from reading ui file 'ShowData.ui'
2+
#
3+
# Created by: PyQt6 UI code generator 6.4.2
4+
#
5+
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
6+
# run again. Do not edit this file unless you know what you are doing.
7+
8+
9+
from PyQt6 import QtCore, QtGui, QtWidgets
10+
import mysql.connector as mc
11+
from PyQt6.QtWidgets import QTableWidgetItem
12+
13+
14+
class Ui_Form(object):
15+
def setupUi(self, Form):
16+
Form.setObjectName("Form")
17+
Form.resize(600, 500)
18+
self.verticalLayout = QtWidgets.QVBoxLayout(Form)
19+
self.verticalLayout.setObjectName("verticalLayout")
20+
self.horizontalLayout = QtWidgets.QHBoxLayout()
21+
self.horizontalLayout.setObjectName("horizontalLayout")
22+
self.label = QtWidgets.QLabel(parent=Form)
23+
font = QtGui.QFont()
24+
font.setBold(True)
25+
self.label.setFont(font)
26+
self.label.setObjectName("label")
27+
self.horizontalLayout.addWidget(self.label)
28+
self.lineEdit_dbname = QtWidgets.QLineEdit(parent=Form)
29+
self.lineEdit_dbname.setObjectName("lineEdit_dbname")
30+
self.horizontalLayout.addWidget(self.lineEdit_dbname)
31+
self.verticalLayout.addLayout(self.horizontalLayout)
32+
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
33+
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
34+
self.label_2 = QtWidgets.QLabel(parent=Form)
35+
font = QtGui.QFont()
36+
font.setBold(True)
37+
self.label_2.setFont(font)
38+
self.label_2.setObjectName("label_2")
39+
self.horizontalLayout_2.addWidget(self.label_2)
40+
self.lineEdit_dbtable = QtWidgets.QLineEdit(parent=Form)
41+
self.lineEdit_dbtable.setObjectName("lineEdit_dbtable")
42+
self.horizontalLayout_2.addWidget(self.lineEdit_dbtable)
43+
self.verticalLayout.addLayout(self.horizontalLayout_2)
44+
self.tableWidget = QtWidgets.QTableWidget(parent=Form)
45+
self.tableWidget.setLineWidth(3)
46+
self.tableWidget.setObjectName("tableWidget")
47+
self.tableWidget.setColumnCount(3)
48+
self.tableWidget.setRowCount(0)
49+
item = QtWidgets.QTableWidgetItem()
50+
self.tableWidget.setHorizontalHeaderItem(0, item)
51+
item = QtWidgets.QTableWidgetItem()
52+
self.tableWidget.setHorizontalHeaderItem(1, item)
53+
item = QtWidgets.QTableWidgetItem()
54+
self.tableWidget.setHorizontalHeaderItem(2, item)
55+
self.tableWidget.horizontalHeader().setDefaultSectionSize(180)
56+
self.verticalLayout.addWidget(self.tableWidget)
57+
self.pushButton_search = QtWidgets.QPushButton(parent=Form)
58+
self.pushButton_search.setObjectName("pushButton_search")
59+
60+
#Connect Signal
61+
self.pushButton_search.clicked.connect(self.show_data)
62+
63+
self.verticalLayout.addWidget(self.pushButton_search)
64+
65+
self.retranslateUi(Form)
66+
QtCore.QMetaObject.connectSlotsByName(Form)
67+
68+
def show_data(self):
69+
dbname = self.lineEdit_dbname.text()
70+
tbname = self.lineEdit_dbtable.text()
71+
try:
72+
mydb = mc.connect(
73+
host="localhost",
74+
user="root",
75+
password="",
76+
database=dbname
77+
)
78+
79+
mycursor = mydb.cursor()
80+
mycursor.execute("SELECT * FROM {} ".format(tbname))
81+
82+
result = mycursor.fetchall()
83+
self.tableWidget.setRowCount(0)
84+
85+
86+
for row_number, row_data in enumerate(result):
87+
self.tableWidget.insertRow(row_number)
88+
89+
for column_number, data in enumerate(row_data):
90+
self.tableWidget.setItem(row_number, column_number, QTableWidgetItem(str(data)))
91+
92+
93+
except mc.Error as e:
94+
print("Error occured")
95+
96+
def retranslateUi(self, Form):
97+
_translate = QtCore.QCoreApplication.translate
98+
Form.setWindowTitle(_translate("Form", "Form"))
99+
self.label.setText(_translate("Form", "Database Name:"))
100+
self.label_2.setText(_translate("Form", "Table Name:"))
101+
item = self.tableWidget.horizontalHeaderItem(0)
102+
item.setText(_translate("Form", "ID"))
103+
item = self.tableWidget.horizontalHeaderItem(1)
104+
item.setText(_translate("Form", "Username"))
105+
item = self.tableWidget.horizontalHeaderItem(2)
106+
item.setText(_translate("Form", "Password"))
107+
self.pushButton_search.setText(_translate("Form", "Show Data"))
108+
109+
110+
if __name__ == "__main__":
111+
import sys
112+
app = QtWidgets.QApplication(sys.argv)
113+
Form = QtWidgets.QWidget()
114+
ui = Ui_Form()
115+
ui.setupUi(Form)
116+
Form.show()
117+
sys.exit(app.exec())

Section-04/InsertingDataDatabaes_ui.py

Lines changed: 0 additions & 80 deletions
This file was deleted.

Section-04/SearchData.ui

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>Form</class>
4+
<widget class="QWidget" name="Form">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>600</width>
10+
<height>500</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>Form</string>
15+
</property>
16+
<widget class="QLabel" name="label">
17+
<property name="geometry">
18+
<rect>
19+
<x>40</x>
20+
<y>30</y>
21+
<width>141</width>
22+
<height>16</height>
23+
</rect>
24+
</property>
25+
<property name="text">
26+
<string>Database Name</string>
27+
</property>
28+
</widget>
29+
<widget class="QLabel" name="label_2">
30+
<property name="geometry">
31+
<rect>
32+
<x>40</x>
33+
<y>50</y>
34+
<width>121</width>
35+
<height>16</height>
36+
</rect>
37+
</property>
38+
<property name="text">
39+
<string>Table Name</string>
40+
</property>
41+
</widget>
42+
<widget class="QLabel" name="label_3">
43+
<property name="geometry">
44+
<rect>
45+
<x>40</x>
46+
<y>80</y>
47+
<width>49</width>
48+
<height>16</height>
49+
</rect>
50+
</property>
51+
<property name="text">
52+
<string>User Name</string>
53+
</property>
54+
</widget>
55+
<widget class="QLabel" name="label_4">
56+
<property name="geometry">
57+
<rect>
58+
<x>30</x>
59+
<y>370</y>
60+
<width>49</width>
61+
<height>16</height>
62+
</rect>
63+
</property>
64+
<property name="text">
65+
<string>TextLabel</string>
66+
</property>
67+
</widget>
68+
<widget class="QLabel" name="label_5">
69+
<property name="geometry">
70+
<rect>
71+
<x>30</x>
72+
<y>400</y>
73+
<width>49</width>
74+
<height>16</height>
75+
</rect>
76+
</property>
77+
<property name="text">
78+
<string>TextLabel</string>
79+
</property>
80+
</widget>
81+
</widget>
82+
<resources/>
83+
<connections/>
84+
</ui>

0 commit comments

Comments
 (0)