Re: [SQLObject] Examples of using 'func'
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
|
From: Martin S. <MCS...@lb...> - 2003-06-19 23:47:48
|
Thats what it was looking like from my failed attempts. Since the date
field comes back with each of the records, I just iterate over the
python objects and extract the max date there.
Luke Opperman wrote:
>Martin -
>
>func won't help you here. for SQLObject select's, you only really have control
>over the where clause of the query. max (and other aggregates) are not allowed
>there in SQL in general, as far as I know (definitely not in Postgres). func
>is for accessing stored procs or built-in db functions.
>
>For the same reason you can't do outer joins in SQLObject, you can't currently
>use SQLObject.select() to just return a max value: it expects to return
>SQLObjects of the class doing the select. So, it would be conceivable to
>retrieve the object with the max value in it, although currently not using
>SQLBuilder (at least, I don't know of a way to do subselects with it):
>
> p = Person.select("int_field = (select max(int_field) from person)")
> # returns a list of Person objects, probably one but maybe zero if the table
> # is empty, or more than one if int_field is not unique, so check!
> if len(p):
> max = p[0].intField
>
>Alternatively, you could retrieve the value using the raw connection, and then
>optionally retrieve person objects:
>
> c = Person._connection.cursor()
> c.execute("select max(int_field) from person")
> max = c.fetchone()[0] #i think? been a long time since i did DBAPI stuff
> Person.select(Person.q.intField == max)
>
>I generally don't go down this route unless absolutely necessary.
>
>Neither of these is particularily pretty (one exposes raw SQL, the other raw db
>queries + SQL), but hope it helps a bit. And if you have ideas for cleaning
>this up, let us know. (I suppose the immediate fix is to have SQLBuilder
>support sub-selects...)
>
>- Luke
>
>Quoting Martin Stoufer <MCS...@lb...>:
>
>
>
>>Any docs or examples out there of using 'func'. Namely, I'd like to see
>>how to find the max() of an integer field in a table meeting some query
>>criteria I define.
>>
>>
>
>
>
>
--
* Martin C. Stoufer *
* DIDC/DSD/ITG *
* Lawrence Berkeley National Lab *
* MS 50B-2215 510-486-8662 *
|