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

-- 



Reply via email to