Thanks. Doing that already.

On Tue, 1 May 2018, 18:55 Richard Vézina <ml.richard.vez...@gmail.com>
wrote:

> I really recommand you to go through this book chapiter :
>
> http://web2py.com/books/default/chapter/29/02/the-python-language
>
> You will learn a lot of thing over which you fall right now.
>
> You also can use type(some_python_object) from the shell to understand
> what you work with... You also can use print and look at the data structure
> of the raw object before trying to loop over it while expecting a behavior
> but forgot that you iterate over a dict and not list for instance...
>
> Richard
>
> On Tue, May 1, 2018 at 11:51 AM, Richard Vézina <
> ml.richard.vez...@gmail.com> wrote:
>
>> Are you querying multiple table?? You can do a join... That way you will
>> have all the value for every fields the only catch is that when you join to
>> disambiguate fields names dal use table.field instead of just field as
>> field name so it migth happen that if you call "manually" vs
>> "programmatically" you field you forgot about that... You have to do
>> db.table['table.field']...
>>
>> Richard
>>
>> On Tue, May 1, 2018 at 11:22 AM, Maurice Waka <mauricew...@gmail.com>
>> wrote:
>>
>>> Thanks.
>>> It iterates well giving some fields data, but not all as needed. I get
>>> data from some 4 fields only. I have about 60 in some db. Plus there is
>>> this:
>>> <pydal.helpers.classes.recordupdater>
>>>
>>> On Tue, 1 May 2018, 16:44 Richard Vézina <ml.richard.vez...@gmail.com>
>>> wrote:
>>>
>>>> for f, v in row:
>>>>
>>>> Should be
>>>>
>>>> for f, v in row.iteritems():
>>>>
>>>> k, v for key, value, but I use f instead of k because you will have
>>>> field_name and value in this for loop...
>>>>
>>>> Richard
>>>>
>>>> On Mon, Apr 30, 2018 at 11:39 PM, Maurice Waka <mauricew...@gmail.com>
>>>> wrote:
>>>>
>>>>> What would f, v be.
>>>>> I get this error : ValueError : too many values to unpack
>>>>>
>>>>> On Mon, 30 Apr 2018, 20:38 Richard Vézina <ml.richard.vez...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> 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:
>>>>>>>>>>>>
>>>>>>>>>>>> <pre class="m_-3733297408904191050m_6143588816043257
>>>>>>>>>>>>
>>>>>>>>>>>

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