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: >>>>>>>>> >>>>>>>>> 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 unsu >>>> >>> -- 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.