python - 在 PyQt5 中使用 PSQL 表打开新窗口
问题描述
出于某种原因,这段代码不想在 PyQt5 中打开 PSQL 表的新表视图。数据库连接测试成功并且可以正常工作,但是表视图没有打开。请注意,我是 PyQt5 的初学者。有什么建议么?
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_())
解决方案
推荐阅读
- c - puts() 只打印文本文件的最后一个元素
- python - 使用数据框中的 for 循环创建多个图
- html - 如何修复我的输入和按钮之间的间距?
- excel - 当查找值比表或范围中的对应值长时部分匹配
- excel - 启用按钮 如果所有复选框都被勾选
- sql-server - IIS 无法连接到 SQL Server,但外部 PC 可以
- angular - 如何从 angular 8 中的primeng p-editor 的工具栏中删除选项卡?
- c# - 当位图宽度不能被 4 整除时,为什么这个边缘检测器不能正常工作?
- java - 有没有办法在后台运行 Python 模型?
- python - 将 Python 中 FOR 循环的结果写入 .txt 文件