QT6: База данных
Пример для работы с Mysql
pip install mysql-connector-python
Пример кода для подключения к базе и создания БД:
from PyQt6 import QtCore, QtGui, QtWidgets
import mysql.connector as mc
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(456, 300)
self.verticalLayout = QtWidgets.QVBoxLayout(Form)
self.verticalLayout.setObjectName("verticalLayout")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_dbname = QtWidgets.QLabel(parent=Form)
font = QtGui.QFont()
font.setPointSize(14)
self.label_dbname.setFont(font)
self.label_dbname.setObjectName("label_dbname")
self.horizontalLayout.addWidget(self.label_dbname)
self.lineEdit_dbname = QtWidgets.QLineEdit(parent=Form)
font = QtGui.QFont()
font.setPointSize(14)
self.lineEdit_dbname.setFont(font)
self.lineEdit_dbname.setText("")
self.lineEdit_dbname.setObjectName("lineEdit_dbname")
self.horizontalLayout.addWidget(self.lineEdit_dbname)
self.verticalLayout.addLayout(self.horizontalLayout)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
self.verticalLayout.addItem(spacerItem)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.pushButton_dbcreate = QtWidgets.QPushButton(parent=Form)
self.pushButton_dbcreate.setObjectName("pushButton_dbcreate")
self.pushButton_dbcreate.clicked.connect(self.create_db)
self.horizontalLayout_2.addWidget(self.pushButton_dbcreate)
self.pushButton_dbconn = QtWidgets.QPushButton(parent=Form)
self.pushButton_dbconn.setObjectName("pushButton_dbconn")
self.pushButton_dbconn.clicked.connect(self.check_connect)
self.horizontalLayout_2.addWidget(self.pushButton_dbconn)
self.verticalLayout.addLayout(self.horizontalLayout_2)
self.label_result = QtWidgets.QLabel(parent=Form)
font = QtGui.QFont()
font.setFamily("PMingLiU-ExtB")
font.setPointSize(14)
self.label_result.setFont(font)
self.label_result.setText("")
self.label_result.setObjectName("label_result")
self.verticalLayout.addWidget(self.label_result)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def create_db(self):
try:
mydb = mc.connect(
host="192.168.1.193",
user="root",
password="rootpassword"
)
cursor = mydb.cursor()
dbname = self.lineEdit_dbname.text()
cursor.execute("CREATE DATABASE {} ".format(dbname))
self.label_result.setText('Database {} created!'.format(dbname))
except mc.Error as e:
self.label_result.setText(str(e))
def check_connect(self):
try:
mydb = mc.connect(
host="192.168.1.193",
user="root",
password="rootpassword",
database="pyqtdb"
)
self.label_result.setText("Connected!")
except mc.Error as e:
self.label_result.setText(str(e))
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.label_dbname.setText(_translate("Form", "Database name:"))
self.pushButton_dbcreate.setText(_translate("Form", "Create Database"))
self.pushButton_dbconn.setText(_translate("Form", "Database connection"))
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())