Найти - Пользователи
Полная версия: [PyQt] Импорт большого кол-ва записей в QSqlTableModel
Начало » GUI » [PyQt] Импорт большого кол-ва записей в QSqlTableModel
1
mironich
Есть такой код:
Открывает файл с записями, если открыл создает обьект импортер.
Перемещает его в поток поток при старте вызывает метод импорта.
        
        records = open_file(fn) 
        if records:
            self.importer = RIWorcker(self.model, records)
            self.import_thread = QThread()
            self.import_thread.started.connect(self.importer.runImport)
            self.importer.moveToThread(self.import_thread)
            self.import_thread.start()

Метод runImport:
Импортирует записи в модель из БД.
 def runImport(self):
        self.model.setEditStrategy(QSqlTableModel.OnManualSubmit)
        for record in self.record_list:
            row = self.model.rowCount()
            self.model.insertRow(row)
            self.model.setData(self.model.index(row, 2), QVariant(record))
            self.record_imported.emit()
        self.model.submitAll()
        self.import_finished.emit()

Когда вызывается record_imported(сигнал)
На окне QDialog увеличивается прогресс бар.
И тут начинаются проблемы при вызове submitAll главное окно приложения виснет…
(Не отвечает на сообщения)
Почему виснет?
Все это отображается в QTableView
mironich
Обернул код импорта в транзикции, летает как электровеник, но они ведь не для этого предназначены..
Тоесть так:
self.model.database().transaction()
self.model.submitAll()
self.model.database().comit()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB