Try this:
rows = db(db.song_table).select()
for x in rows.sort(lambda row: row.scores):
print x.scores
Only the selected ones will be sorted.
On Thursday, 22 November 2012 18:25:13 UTC-6, Mark Li wrote:
>
> Ahh thanks Niphlod!
>
> On Thursday, November 22, 2012 2:49:28 PM UTC-8, Niphlod wrote:
>>
>> yep, support for decimal is kinda absent so it's treated "like a string".
>>
>> On Thursday, November 22, 2012 10:10:23 PM UTC+1, Mark Li wrote:
>>>
>>> Yes this is on SQLite, is this a problem unique to SQLite?
>>>
>>> On Thursday, November 22, 2012 1:58:41 AM UTC-8, Niphlod wrote:
>>>>
>>>> is this on SQLite ?
>>>>
>>>> On Thursday, November 22, 2012 3:44:38 AM UTC+1, Mark Li wrote:
>>>>>
>>>>> I currently have a table with 'scores' as one of the fields, with the
>>>>> field type 'double'.
>>>>>
>>>>> When I go to fetch a row (ordered by scores) and print the scores,
>>>>> they come back sorted as if they were strings.
>>>>> I use the following:
>>>>>
>>>>> rows = db(db.song_table).select(orderby = db.song_table.scores)
>>>>> for x in rows:
>>>>> print x.scores
>>>>>
>>>>> this prints out the following:
>>>>>
>>>>> -15.0
>>>>> -16.0
>>>>> -17.0
>>>>> -2.0
>>>>> -20.0
>>>>> -34.0
>>>>> 0.0
>>>>> 0.0
>>>>> 15.0
>>>>> 2.0
>>>>> 20.0
>>>>>
>>>>>
>>>>> The scores are ordered as if they were strings, not numbers. However,
>>>>> when you fetch a score, it is still a float, not a string.
>>>>>
>>>>> Is this intended behavior, or a bug with field type 'double'?
>>>>>
>>>>>
>>>>> I am aware that for field type 'integer', the scores are sorted
>>>>> properly, but I will have decimals in my scores.
>>>>>
>>>>>
>>>>>
>>>>>
--