Я продолжаю получать сообщение о том, что мое значение не помещено в действительную запись. Я успешно выполнил свой запрос в MySQL, но я думаю, что в своем коде я что-то не замечаю.Пытается извлечь значения из PyQt4 QSqlQuery
query = QtSql.QSqlQuery("select patient_id," +
"(SUM(IF(uom_id = 1, value, 0))/SUM(IF(uom_id = 1, 1, 0))) AS `Average radius`," +
"(SUM(IF(uom_id = 2, value, 0))/SUM(IF(uom_id = 2, 1, 0))) AS `Average Volume`," +
"(SUM(IF(uom_id = 3, value, 0))/SUM(IF(uom_id = 3, 1, 0))) AS `Average SA`" +
"from measurements" +
"WHERE image_id = " + self.dbImage.id.toString() +
"AND status = 'A'" +
"GROUP BY patient_id", self.db)
query.next()
radius_acc = query.value(1).toDouble()
volume_acc = query.value(2).toDouble()
SA_acc = query.value(3).toDouble()
print('average of previously accepted measurements includes ' +
'radius = ' + str(radius_acc) +
'volume = ' + str(volume_acc) +
'SA = ' + str(SA_acc))
В частности, я хочу знать, если есть что-то не так с тем, как я ввода запроса к QSqlQuery? Или, возможно, я пытаюсь использовать метод value (n) неправильно?
Если ни один из них не выглядит так, я готов поспорить, что я использую неправильный параметр для self.dbImage.id.toString() в моем запросе, и в этом случае я просто спрошу сотрудника завтра.
О, нет! Не создавайте свой запрос с помощью конкатенации с горизонтальной строкой. Используйте один из этих [методов привязки] (http://qt-project.org/doc/qt-4.8/qsqlquery.html#approaches-to-binding-values). Без этого ваш код открыт для [SQL Injection] (http://en.wikipedia.org/wiki/Sql_injection). – Avaris