Search code examples
pythonexceptioninsertexecutemismatch

mismatch exception on query.execute() python


I tried to insert a row on my sqLiteDatabase whith this code:

        query = QtSql.QSqlQuery()
        query.prepare('insert into rutas '
                      '(matricula, conductor, fecha, kmIn, kmFin, ,kmTotal, tarifaKm, tarifaTotal) '
                      'VALUES (:matricula, :conductor, :fecha, :ki, :kf, :kt, :tkm, :tt)')

        query.bindValue(":matricula", str(newRuta[0]))
        query.bindValue(":conductor", str(newRuta[1]))
        query.bindValue(":fecha", str(newRuta[2]))

        query.bindValue(":ki", int(newRuta[3]))
        query.bindValue(":kf", int(newRuta[4]))
        query.bindValue(":kt", int(newRuta[5]))

        query.bindValue(":tkm", float(newRuta[6]))
        query.bindValue(":tt", float(newRuta[7]))

        if query.exec_():

            QtWidgets.QMessageBox.information(None, 'Alta Ruta Correcta', 'Haga Click para Continuar')

        else:

            QtWidgets.QMessageBox.warning(None, query.lastError().text(), 'Haga Click para Continuar')

When the program reach the query.exec() method it always goes to the else sentence showing this error:

error

newRuta is the array where i put my values and i have already checked that newRuta works well.


Solution

  • You have doubled commas between kmFin and kmTotal.

    query.prepare('insert into rutas '
                          '(matricula, conductor, fecha, kmIn, kmFin, ,kmTotal, tarifaKm, tarifaTotal) '
                          'VALUES (:matricula, :conductor, :fecha, :ki, :kf, :kt, :tkm, :tt)')
    

    should be

    query.prepare('insert into rutas '
                          '(matricula, conductor, fecha, kmIn, kmFin, kmTotal, tarifaKm, tarifaTotal) '
                          'VALUES (:matricula, :conductor, :fecha, :ki, :kf, :kt, :tkm, :tt)')