Здравствуйте. Пишу свою модель которая наследуется от QSqlQueryModel т.к. необходимо организовать удаление строки из базы данных. Но сама функция удаления либо не удаляет выбранную строку, либо удаляет но всегда последнюю. Подскажите где в ней ошибка.

 class NewSqlModel(QSqlQueryModel):
    def __init__(self, parent=None):
        super(NewSqlModel, self).__init__()
    def flags(self, index):
        """Предопределим флаги для дальнейшего их редактирования в
            модели"""
        f1 = QSqlQueryModel.flags(self, index)
        if index.column() == 0:
            f1 |= Qt.ItemIsEditable
        return f1
    def setData(self, index, value, role=Qt.EditRole):
        """Метод для обновления данных"""
        self.data = QSqlQueryModel.data(self, index, role)
        if index.isValid():
            self.data(index.row(), value)
            self.dataChanged.emit(index, index, role)
            return True
        return False
    # Функция с ошибкой
    def removeRows(self, position, index, parent=QModelIndex()):
        """Производим удаление выбранной строки"""
        self.beginRemoveRows(parent, position, position + index - 1)
        self.query = QSqlQuery('DELETE FROM calculation WHERE id = %d' % position)
        self.endRemoveRows()
        return True
Так же прилагаю функцию подключение модели и вызов функции удаления выбранной строки.
 def connect_column_calc(self):
      """Подключаем модель к БД и производим запрос к ней"""
      self.calculation_model = NewSqlModel()
      self.calculation_model.setQuery('SELECT id, number_invoice, inv_date, company_name, '
                                      '(all_sum / 100.0) AS all_sum, signatory FROM calculation')
    def del_pushbutton(self):
        """Функция удаляет выделенную строку из БД.
               Запускается через кнопку"""
        if self.inv_tabView.selectionModel().hasSelection():
            for index in self.inv_tabView.selectedIndexes() or []:
                print('Удаляется строка %d...' % index.row())
                self.start_menu.model().removeRows(index.row(), index.row())
        else:
            QMessageBox.warning(None, 'Ошибка удаления', 'Строки для удаления отсутствуют! \n'
                                                         'Выделите строку и повторите удаление.')