import os from PyQt5.QtCore import QSize, Qt from PyQt5.QtSql import QSqlDatabase, QSqlTableModel from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView basedir = os.path.dirname(__file__) class MainWindow(QMainWindow): def __init__(self): super().__init__() self.table = QTableView() self.db = QSqlDatabase("QSQLITE") self.db.setDatabaseName(os.path.join(basedir, "Chinook_Sqlite.sqlite")) self.db.open() self.model = QSqlTableModel(db=self.db) self.model.setTable("Track") # idx = self.model.fieldIndex("Milliseconds") # self.model.setSort(idx, Qt.DescendingOrder) column_titles = { "Name": "Name", "Composer": "Composer", "AlbumId": "Album (ID)", "MediaTypeId": "Media Type (ID)", "GenreId": "Genre (ID)", } for n, t in column_titles.items(): idx = self.model.fieldIndex(n) self.model.setHeaderData(idx, Qt.Horizontal, t) # self.model.setHeaderData(1, Qt.Horizontal, "Name") self.model.select() # self.model.setEditStrategy(QSqlTableModel.OnRowChange) self.table.setModel(self.model) self.setMinimumSize(QSize(1024, 600)) self.setCentralWidget(self.table) if __name__ == "__main__": import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_())