thanks Anthony,
your answer looks really great, exactly what I was looking for and more ;-)
I'll probably try it to morrow.
cheers,
Stef
On 01-Jan-15 22:39, Anthony wrote:
In that case, I wouldn't bother having the DAL create a Rows object.
Instead, the database cursor will return a list of tuples, which you
can feed directly to numpy to create an array. There are two
approaches to do this:
|
importnumpy asnp
my_array =np.asarray(db.executesql(db(query)._select(*fields)))
|
When you call ._select() instead of .select(), it simply returns the
SQL string, which then gets passed to db.executesql(), which returns
the raw results from the database (i.e., a list of tuples) without any
further processing by the DAL.
A similar option is to use the "processor" argument to .select(),
which allows you to specify a custom processor rather than having the
DAL create a Rows object:
|
defnp_array(records,fields,columns,cacheable):
returnnp.asarray(records)
my_array =db(query).select(*fields,processor=np_array)
|
In the above case, the DAL will take the raw results from the database
and pass them to the custom np_array function.
Anthony
On Thursday, January 1, 2015 4:07:23 PM UTC-5, aapaap wrote:
thanks Anthony,
No, I don't need a list of dictionairies.
From your question, I assume there's also a way to get a plain table ?
I need a list of lists or even better a 2D-numpy array (so I can
easily perform some conversions).
The final list of lists (or numpy array) must be converted to a
csv file (by a service)
cheers,
Stef
On 01-Jan-15 21:22, Anthony wrote:
The problem is that you call .as_list(), which converts to a list
of dictionaries, and dictionaries do not preserve the order of
keys. Do you need a list of dictionaries?
On Thursday, January 1, 2015 3:09:22 PM UTC-5, aapaap wrote:
hello,
I'm using dygraph to plot a number of parameters.
Dygraph needs a csv file as it's input.
So I made a service:
@service.csv
def service_platdak():
ToDay = date.today()
Tomorrow = ( ToDay + timedelta (1) )
Fields = [ db.Compare_Model.Date,
db.Compare_Model.M2,db.Compare_Model.M2_s1 ]
Rows = db ( ( db.Compare_Model.Date >= ToDay ) &
( db.Compare_Model.Date < Tomorrow ) &
( db.Compare_Model.M2 > 0.01 ) ).select(
*Fields,
orderby = db.Compare_Model.Date ).as_list()
return Rows
This works almost, except the order of the fileds is not
maintained (M2 and M2_s1 are exchanged):
Date,M2_s1,M2
2015-01-01 09:20:00,,0.666666666667
2015-01-01 09:30:00,,3.92857142857
2015-01-01 09:40:00,,8.5
....
is there a way (other than raw SQL) to maintain the column
order ?
thanks,
Stef
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py
<http://github.com/web2py/web2py> (Source code)
- https://code.google.com/p/web2py/issues/list
<https://code.google.com/p/web2py/issues/list> (Report Issues)
---
You received this message because you are subscribed to the
Google Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to web2py+unsubscr...@googlegroups.com
<mailto:web2py+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google
Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to web2py+unsubscr...@googlegroups.com
<mailto:web2py+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.