使用PyQt4 - QTableView与SQLAlchemy和QSqlTableModel结合使用

4 投票
1 回答
6479 浏览
提问于 2025-04-15 20:07

我正在开始学习Python的Qt,看到这篇帖子后我在想:qt - pyqt QTableView在更改数据库时没有填充。 有没有办法用SQLAlchemy的会话来代替(重新)打开数据库连接,作为Qt的QTableView小部件的表模型呢?

我想要的效果大概是这样的:

databasePath = "base.sqlite" # used for production

engine = create_engine('sqlite:///' + databasePath, echo=True)

# initializing session :
Session = sessionmaker(bind=engine)
session = Session()

# Set up the user interface from Designer.
self.setupUi(self)

self.model = QSqlTableModel(self)
self.model.setTable("records")

self.model.setSort(FILEORDER, Qt.AscendingOrder)

self.model.setHeaderData(ID, Qt.Horizontal, QVariant("ID"))
self.model.setHeaderData(NAME, Qt.Horizontal, QVariant("Name"))
self.model.select()

self.tableView.setModel(self.model)

任何帮助都将非常感激,同时也欢迎新的思路来解决这个问题。

谢谢

1 个回答

5

看看这个Camelot吧。它的功能可多着呢:)

我当时因为用Q*View和Q*Model遇到了一堆麻烦,心里特别烦躁,结果决定自己动手用SqlAlchemy来实现一个。刚做了一半的时候,我就发现了这个工具,它的功能远远超出了我之前的想象,真是让我大开眼界,之前我还在为QSqlRelationalTableModel而苦恼呢。

撰写回答