[web2py] Re: Orderby does not work field type 'double', sorts as if floats were strings

2012-11-23 Thread Massimo Di Pierro
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.
>
>
>
>

-- 





[web2py] Re: Orderby does not work field type 'double', sorts as if floats were strings

2012-11-22 Thread Mark Li
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.





-- 





[web2py] Re: Orderby does not work field type 'double', sorts as if floats were strings

2012-11-22 Thread Niphlod
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.
>>>
>>>
>>>
>>>

-- 





[web2py] Re: Orderby does not work field type 'double', sorts as if floats were strings

2012-11-22 Thread Mark Li
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.
>>
>>
>>
>>

-- 





[web2py] Re: Orderby does not work field type 'double', sorts as if floats were strings

2012-11-22 Thread Niphlod
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.
>
>
>
>

--