gpt4 book ai didi

python - 尝试从 PyQt4 QSqlQuery 中提取值

转载 作者:行者123 更新时间:2023-11-30 23:43:58 27 4
gpt4 key购买 nike

我不断收到错误消息,指出我的值未定位在有效记录上。我已经在 MySQL 中成功执行了查询,但我认为我忽略了代码中的某些内容。

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() 参数,在这种情况下,我明天就会问同事。

最佳答案

要迭代结果集,通常使用 while 循环:

 while(query.next()){
// do whatever you need with query.value()
}

如果您只对第一行感兴趣,则可以使用 first(),再次使用 while 循环:

 while(query.first()){
// do whatever you need with query.value()
}

编辑:抱歉,误解了您的问题。现在我发现您可能忘记在某些字符串中添加一些空格:

 "from measurements"

 " from measurements "
#^ Here and here ^^

如果没有这些空格,您的查询将类似于

  "...d = 3, 1, 0))) AS `Average SA`from measurementsWHERE image_id = ..."

这当然不是一个有效的查询。

关于python - 尝试从 PyQt4 QSqlQuery 中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10424210/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com