On Mon, Apr 30, 2018 at 1:21 PM, Maurice Waka <mauricew...@gmail.com> wrote:

> Sorry I tried to clarify by my new question :
>
> If I have a column with data like db.persons with data like
> Carl
> Junior
> Maggie
> Tom
> Derrick
>
> And each column name has other fields with data such as:
> persons.name persons.age persons.location persons.occupation
> persons.interests
> Carl 23 London Neuroscientist brainy stuff
> Junior 25 Tokyo doctor medical research
> Maggie 33 Nairobi farmer GMO research
> Tom 25 Sydney teacher educational ideas
> Derrick 21 Chicago surgeon Cutting through
>
>
>
> I want to iterate through the column  persons.nameand randomly pick a
> name and using the rows object, display all data about the person.
>
> If I do
> rows_name = db().select(db.persons.name).column()
>


The above should be :

fields = db.persons.fields
# You should have in fields a list of all fields names you migth want to
remove "id" field by filtering it or find index and pop it out of the list
# ex.: fields.pop(fields.index('id'))



>
>
> rows = db(db.persons.ALL).select()
>

db(where_clause).select(fields_name_separated_by_comma)

The above is completly wrong as you pass the fields instead of specifying
your where clause parameter...

In you example you really only need select like this :

def some_func_name()
    rows = db(db.persons.id > 0).select(db.persons.ALL)

    rows_values = []
    for row in rows:
        row_value = []
        for f, v in row:
            if f != 'id':
                row_value.append(v)
        rows_values.append(row_value)
    return rows_values

ret = some_func_name()

for r in ret:
    print(' '.join(ret))

I didn't tested it but the above should work...

Good luck

>
> for row in rows:
>     if rows_name[0] == 'Maggie':
>         for row in rows:
>                 return [row.age+' '+row.location+' '+row.occupation+' '+
> row.interests]
>
> The problem is that if I query 'Carl' which is the first item, I get the
> response but I cant query any other name .
> Regards
>
>
>
> --
> 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 a topic in the
> Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit https://groups.google.
> com/d/topic/web2py/ynBOuIdufso/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
> I had been using python isle to test some modules. Now I just want to get
> a clearer code by removing the long codes.
>
>
> On Mon, 30 Apr 2018, 20:09 Richard Vézina <ml.richard.vez...@gmail.com>
> wrote:
>
>> Man this is convulated...
>>
>> Not sure what is in name4 "name4 is a list that contains items found in
>> db.health.name, as well as other dbs." what items are you referring at??
>> What other dbs?
>>
>> Why are you connecting to sqlite by your own...
>>
>> This check is just weird :
>>
>> if id == item in name4:
>>
>> I would suggest you don't use function to achieve what you try to do it
>> just make it overcomplicated... Also never define functions in models files
>> it will slow down your app as models files are executed at each request.
>>
>> My guess is that if you end with the final list that you showed us is
>> because at some point you put the name of the fields you want instead of
>> the value attached to them...
>>
>> But seriously it very difficult to help...
>>
>> You could show us all the models that are important to the problem and
>> show us an example of what you want at the end.
>>
>>
>> I also don't know from you field name in health table what they content.
>>
>> So for example let say
>>
>>
>> You have a table name fruit
>>
>> rows = db(db.fruit.id > 0).select(db.fruit.ALL)
>>
>> With a fruit_name field
>>
>> for r in rows:
>>     print('A {0} is a fruit blah blah blah. A {0} when its green is
>> bitter to taste. A {0} when ripe looks bright yellow and tastes
>> sweet.'.format(r.fruit_name)
>>
>> That's it!!
>>
>> Richard
>>
>>
>> On Sat, Apr 28, 2018 at 11:02 AM, Maurice Waka <mauricew...@gmail.com>
>> wrote:
>>
>>> Thanks, but I seem to be having a challenge when returning the rows from
>>> a specific id name or number. I tried this on a different app as follows:
>>>
>>> Model:
>>>
>>> db.define_table( "health",
>>>                 Field('name', 'string'),
>>>                 Field('definition', 'text', length= 1000000,
>>> default="We'll update soon.", notnull=True),
>>>                 Field('abnvals', 'text', length= 1000000,default="We'll
>>> update soon.", notnull=True),
>>>                 Field('normvals', 'text', length= 1000000,default="We'll
>>> update soon.", notnull=True),
>>> def selections():
>>> code
>>> return name4# name4 is a list that contains items found in
>>> db.health.name, as well as other dbs.
>>>  def refer11():
>>>     db = current.db
>>>     rows = db(db.health).iterselect()
>>> for row in rows:
>>> id = row.name
>>> if id == item in name4:
>>> #return [', '.join(item) for item in rows]# Gives a list of the titles
>>> only as: ['name','definition','abnvals','normvals',]
>>>                         #return [item for item in rows]# Gives this:
>>> [<row>
>>>                         #return row# gives this : <row>
>>>                         #return [item for item in row]# Gives a list of
>>> the titles only as: ['name','definition','abnvals','normvals',]
>>>
>>> When using sql speak, this works well:
>>> def refer11():
>>> id = 0
>>> location = ""
>>> conn = sqlite3.connect('wellness.db')
>>> c = conn.cursor()
>>> c.execute('select * from health')
>>> records = c.fetchall()
>>> for record in records:
>>>     id = record[1]
>>>     for item in name4:
>>>         if id == item in name4:
>>>         return record[2:]
>>>
>>> If row.name has e.g. apple, mango, guava, pineapple, then
>>>
>>> and the fields contain info about the fruits e.g.
>>>
>>> if id/row.name picks mango, i want a list of these:
>>>
>>> definition data: A mango is a fruit blah blah blah.
>>> abnvals data: A mango when its green is bitter to taste.
>>> normvals data: A mango when ripe looks bright yellow and tastes sweet.
>>>
>>> so when doing return row
>>> I should get ['A mango is a fruit blah blah blah. A mango when its
>>> green is bitter to taste. A mango when ripe looks bright yellow and
>>> tastes sweet.]
>>> and not
>>> ['name','definition','abnvals','normvals',]
>>>
>>> On Fri, Apr 27, 2018 at 6:16 PM, Richard Vézina <
>>> ml.richard.vez...@gmail.com> wrote:
>>>
>>>> for f in db.table.fields:
>>>>     print f
>>>>
>>>> or
>>>>
>>>> rows = db(db.fruits.id > 0).select(db.fruits.ALL)  # ALL means all
>>>> fields
>>>>
>>>> for r in rows:
>>>>     print(r)
>>>>
>>>> You can control which field you want with the previous example
>>>>
>>>> myfields = [f for f in db.table.fields if SOME_FILTERING_CHECK_OVER_THE_
>>>> FIELD_YOU_WANT]
>>>>
>>>>
>>>> for r in rows:
>>>>     for f in myfields:
>>>>         print(r[f])
>>>>
>>>>
>>>> You can play around that you should be able to figure out how you can
>>>> do what you wanna do.
>>>>
>>>> Richard
>>>>
>>>> On Fri, Apr 27, 2018 at 10:08 AM, Maurice Waka <mauricew...@gmail.com>
>>>> wrote:
>>>>
>>>>> Addendum
>>>>>
>>>>> I want a single list of  the items (the data from all fields)
>>>>>
>>>>> regards
>>>>>
>>>>> On Fri, Apr 27, 2018 at 5:06 PM, Maurice Waka <mauricew...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> There are several fields in my db such as this:
>>>>>>
>>>>>> db.define_table('fruit', Field('id', 'reference auth_user'), 
>>>>>> Field('apple','boolean',label=T('Apple')), 
>>>>>> Field('apricot','boolean',label=T('Apricot')), 
>>>>>> Field('cherry','boolean',label=T('Cherry')), Field('fig','boolean', 
>>>>>> label=T('Fig')), Field('lychee','boolean', label=T('Lychee')), 
>>>>>> Field('peach','boolean', label=T('Peach')), Field('pear','boolean', 
>>>>>> label=T('Pear')), Field('plum','boolean', label=T('Plum')))
>>>>>> If i want to print items from a specific field i would do:
>>>>>>
>>>>>> rows = db(db.fruits)select()for row in rows:
>>>>>>  return row.apple
>>>>>>
>>>>>>
>>>>>> Now I want to return all data from all fields. How Can i go about it.
>>>>>>
>>>>>> I have tried:
>>>>>>
>>>>>> return rows and I get a blank screen.
>>>>>>
>>>>>> return [rows] and I get [<rows>].
>>>>>>
>>>>>> Kind regards
>>>>>>
>>>>>> --
>>>>>> 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 a topic in
>>>>>> the Google Groups "web2py-users" group.
>>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/
>>>>>> topic/web2py/-Hlx1yh-4MU/unsubscribe.
>>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>>> 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.
>>>>>
>>>>
>>>> --
>>>> 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 a topic in the
>>>> Google Groups "web2py-users" group.
>>>> To unsubscribe from this topic, visit https://groups.google.com/d/
>>>> topic/web2py/-Hlx1yh-4MU/unsubscribe.
>>>> To unsubscribe from this group and all its topics, send an email to
>>>> 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.
>>>
>>
>> --
>> 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 a topic in the
>> Google Groups "web2py-users" group.
>> To unsubscribe from this topic, visit https://groups.google.com/d/
>> topic/web2py/-Hlx1yh-4MU/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> 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.
>

-- 
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