On Thursday, August 30, 2012 4:31:37 PM UTC-4, Mike Girard wrote:
>
> So today's announcement of the new release included a suggestion that an
> executesql result can be returned as Rows. If this is true, can I see a
> usage example? A little puzzled by 'fields=,columns='?
db.define_table('person', Field('name'), Field('email'))
db.define_table('dog', Field('name'), Field('owner', 'reference person'))
db.executesql([SQL code returning person.name and dog.name fields], fields=[
db.person.name, db.dog.name])
db.executesql([SQL code returning all fields from db.person], fields=db.
person)
db.executesql([SQL code returning all fields from both tables], fields=[db.
person, db.dog])
db.executesql([SQL code returning person.name and all db.dog fields], fields
=[db.person.name, db.dog])
Here's the docstring:
Added 2012-08-24 "fields" optional argument. If not None, the
results cursor returned by the DB driver will be converted to a
DAL Rows object using the db._adapter.parse() method. This requires
specifying the "fields" argument as a list of DAL Field objects
that match the fields returned from the DB. The Field objects should
be part of one or more Table objects defined on the DAL object.
The "fields" list can include one or more DAL Table objects inaddition
to or instead of including Field objects, or it can be just a single
table (not in a list). In that case, the Field objects will be
extracted from the table(s).
The field names will be extracted from the Field objects, oroptionally
,
a list of field names can be provided (in tablename.fieldname format
)
via the "colnames" argument. Note, the fields and colnames must be
in
the same order as the fields in the results cursor returned fromthe DB
.
Anthony
--