#python #exception #insert #execute #mismatch
Вопрос:
Я попытался вставить строку в свою базу данных SQLiteDatabase с помощью этого кода:
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')
Когда программа достигает query.exec()
метода, она всегда переходит к else
предложению, показывающему эту ошибку:
newRuta
это массив, в который я помещаю свои значения, и я уже проверил, что newRuta
он хорошо работает.
Комментарии:
1.
kmFin, ,kmTotal
— двойные запятые намеренны?2. Большое спасибо!
Ответ №1:
Вы удвоили запятые между kmFin
и kmTotal
.
query.prepare('insert into rutas '
'(matricula, conductor, fecha, kmIn, kmFin, ,kmTotal, tarifaKm, tarifaTotal) '
'VALUES (:matricula, :conductor, :fecha, :ki, :kf, :kt, :tkm, :tt)')
должно быть
query.prepare('insert into rutas '
'(matricula, conductor, fecha, kmIn, kmFin, kmTotal, tarifaKm, tarifaTotal) '
'VALUES (:matricula, :conductor, :fecha, :ki, :kf, :kt, :tkm, :tt)')