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