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()) 

 

   

  