[PyQt] QSqlQueryModel write subclass

Linos info at linos.es
Fri Oct 12 00:03:21 BST 2007


Hello,
	i am trying to subclass QSqlQueryModel to write with it, i need this because not qsqltablemodel or
qsqlrelationaltablemodel fills my needs, i would like to do joins and insert in multiple tables, i have
implemented "flags" and "setData" methods and it works ok now, i have made a "refresh" method to reload the
contents on update because tableView not reload them with datachanged signal and all works ok but now i am
trying to implement insertrow or insertrows without luck, this is the code i am using now:

this in model:

def insertRows(self, position, rows=1, index=QModelIndex()):
        self.beginInsertRows(QModelIndex(), position, position + rows - 1)
        setdataquery = QSqlQuery(self.cursor)
        setdataquery.exec_(QString("INSERT INTO SCHEMA.FAKE (FAKE1, FAKE2, FAKE3) VALUES (4, 2, 'PEPITO')"))
        self.endInsertRows()
        self.dirty = True
        return True

this in qdialog:

def addRecord(self):
        row = self.querymodel.rowCount()
        self.querymodel.insertRows(row)
        index = self.querymodel.index(row, 0)
        self.tableView.setCurrentIndex(index)
        self.tableView.edit(index)

After execute this method i can view the new row in table view but i get this in stdout.

edit: index was invalid
edit: editing failed

I have test the row number rowCount() assign and it is ok, i dont know how to fix this, anyone can help me please?


PD: I get original snippet and the idea about subclass QSqlQueryModel in the really excellent book "Rapid GUI
Development with Python-PyQT".


More information about the PyQt mailing list