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.

Reply via email to