在Web2py中,orderby作为字符串处理的整数字段

时间:2013-02-17 00:14:32

标签: web2py

我有一个问题: -

result = db(db.tag_count.user_id == user_id).select(db.tag_count.name, db.tag_count.count, orderby=~ db.tag_count.count, limitby=(0, 10))

表格定义为

db.define_table('tag_count',
                Field('name'),
                Field('user_id', db.auth_user),
                Field('count', 'integer'),
                format='%(title)s')

查询的目的是返回包含tag_count的最大整数值的前10行。

实际上,它返回tag_count的最高字符串值,例如21,2,12,2,即2> 12。我希望21,12,2,1

我使用web2py 2.3.2和sqlite作为数据库。

知道我做错了吗?

1 个答案:

答案 0 :(得分:1)

为了将来像我这样的人。感谢Anthony的评论。

原始表未将字段定义为整数并默认为字符串。我意识到我需要一个整数并更新字段。 SQlite无法迁移类型,因此它仍然是一个字符串。

解决方案是导出表,使用整数重新创建表,并确保重新插入类型是整数。

有关详细信息,请参阅here