[web2py] Re: Orderby does not work field type 'double', sorts as if floats were strings
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
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
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
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
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. > > > > --