For some reason, this code does not want to open a new table view of a PSQL table in PyQt5. The DB connection tested successfully and it works, yet the table view does not open. Please note that I am total beginner in PyQt5. Any suggestions?
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtSql import QSqlDatabase, QSqlQueryModel, QSqlQuery
from PyQt5.QtWidgets import QTableView,QApplication
import sys
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(254, 135)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(30, 40, 191, 41))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.pushButton.clicked.connect(self.loadData)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
def loadData(self):
# connect to postgresql
db = QSqlDatabase.addDatabase("QPSQL")
db.setHostName('localhost')
db.setDatabaseName('my_db')
db.setPort(5432) # int
db.setUserName('random_user')
db.setPassword('random_password')
db.open()
# if db.open():
print("connected")
# create tableview
tableView = QTableView()
# create sqlquery
query = QSqlQuery(db)
query.prepare("SELECT * FROM Table1")
query.exec()
print('executing query')
model = QSqlQueryModel()
model.setQuery(query)
tableView.setModel(model)
tableView.show()
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_())