问题描述
下面是我的示例代码:
from PyQt5 import QtCore,QtGui,QtWidgets,QtSql
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtSql import *
import sys
class Ui_MainWindow(object):
def setupUi(self,MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800,600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.details_tableview = QtWidgets.QTableView(self.centralwidget)
self.details_tableview.setGeometry(QtCore.QRect(30,220,381,271))
self.details_tableview.setObjectName("details_tableview")
self.full_tableview = QtWidgets.QTableView(self.centralwidget)
self.full_tableview.setGeometry(QtCore.QRect(440,341,271))
self.full_tableview.setObjectName("full_tableview")
self.title_combo = QtWidgets.QComboBox(self.centralwidget)
self.title_combo.setGeometry(QtCore.QRect(164,41,69,20))
self.title_combo.setObjectName("title_combo")
self.title_combo.addItem("")
self.title_combo.setItemText(0,"")
self.title_combo.addItem("")
self.title_combo.addItem("")
self.save_btn = QtWidgets.QPushButton(self.centralwidget)
self.save_btn.setGeometry(QtCore.QRect(100,180,75,23))
self.save_btn.setObjectName("save_btn")
self.first_name_line = QtWidgets.QLineEdit(self.centralwidget)
self.first_name_line.setGeometry(QtCore.QRect(164,67,133,20))
self.first_name_line.setObjectName("first_name_line")
self.lastNameLabel = QtWidgets.QLabel(self.centralwidget)
self.lastNameLabel.setGeometry(QtCore.QRect(102,93,50,16))
self.lastNameLabel.setObjectName("lastNameLabel")
self.last_name_line = QtWidgets.QLineEdit(self.centralwidget)
self.last_name_line.setGeometry(QtCore.QRect(164,20))
self.last_name_line.setObjectName("last_name_line")
self.designationLabel = QtWidgets.QLabel(self.centralwidget)
self.designationLabel.setGeometry(QtCore.QRect(102,145,56,16))
self.designationLabel.setObjectName("designationLabel")
self.mobileLabel = QtWidgets.QLabel(self.centralwidget)
self.mobileLabel.setGeometry(QtCore.QRect(102,119,30,16))
self.mobileLabel.setObjectName("mobileLabel")
self.desig_line = QtWidgets.QLineEdit(self.centralwidget)
self.desig_line.setGeometry(QtCore.QRect(164,20))
self.desig_line.setObjectName("desig_line")
self.mobile_line = QtWidgets.QLineEdit(self.centralwidget)
self.mobile_line.setGeometry(QtCore.QRect(164,20))
self.mobile_line.setObjectName("mobile_line")
self.firstNameLabel = QtWidgets.QLabel(self.centralwidget)
self.firstNameLabel.setGeometry(QtCore.QRect(102,51,16))
self.firstNameLabel.setObjectName("firstNameLabel")
self.tilteLabel = QtWidgets.QLabel(self.centralwidget)
self.tilteLabel.setGeometry(QtCore.QRect(102,20,16))
self.tilteLabel.setObjectName("tilteLabel")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0,800,21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.mobile_line.setValidator(QIntValidator())
self.save_btn.clicked.connect(self.save_data)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("employee.db")
if db.open():
query = QSqlQuery()
query.exec_("CREATE TABLE IF NOT EXISTS details(title TEXT,first_name TEXT,last_name TEXT,mobile TEXT,designation TEXT)")
query.exec_("CREATE TABLE IF NOT EXISTS view(full name TEXT,designation TEXT)")
self.emp_model = QtSql.QSqlTableModel()
self.emp_model.setTable("details")
self.emp_model.select()
self.details_tableview.setModel(self.emp_model)
self.view_model = QtSql.QSqlTableModel()
self.view_model.setTable("view")
self.view_model.select()
self.full_tableview.setModel(self.view_model)
def retranslateUi(self,MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow","MainWindow"))
self.title_combo.setItemText(1,_translate("MainWindow","Mr."))
self.title_combo.setItemText(2,"Ms."))
self.save_btn.setText(_translate("MainWindow","Save"))
self.lastNameLabel.setText(_translate("MainWindow","Last Name"))
self.designationLabel.setText(_translate("MainWindow","Designation"))
self.mobileLabel.setText(_translate("MainWindow","Mobile"))
self.firstNameLabel.setText(_translate("MainWindow","First Name"))
self.tilteLabel.setText(_translate("MainWindow","Tilte"))
def save_data(self):
data_ = [self.title_combo.currentText(),self.first_name_line.text(),self.last_name_line.text(),self.mobile_line.text(),self.desig_line.text()]
print(data_)
r = self.emp_model.record()
r.setValue("title",self.title_combo.currentText())
r.setValue("first_name",self.first_name_line.text())
r.setValue("last_name",self.last_name_line.text())
r.setValue("mobile",self.mobile_line.text())
r.setValue("designation",self.desig_line.text())
self.emp_model.insertRecord(-1,r)
self.emp_model.select()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
我正在使用QtSql.QSqlTableModel,QSqlQuery(),QTableView。
是否可以将所需的列数据从一个表连接到第二个表列。例如,在第一个表中有五列,我需要将“标题”,“名字”和“姓氏”连接为“全名”,并且应将其作为“全名”列插入第二个表中。并且需要从第一个表的“ mobile”列值插入到第二个表的“ mobile”列,并从第一个表的“ Designation”列插入到第二个表的“ designation”列。如果可能,该怎么办?如果有任何解决方案会有所帮助。
请找到图片以供参考。
解决方法
如果要在表的行之间创建绑定,则可能的解决方案是创建触发器,然后在修改(插入,更新或删除)表之前修改另一个表。
nextIdx