I've narrowed down the problem. I dropped the table then added it again and started removing fields and doing the create. My problem is a field called 'expiration' that I want to set automatically for the user. My model includes 3 tables: tiers, groups, and accounts. Each account references the group it's in (every account is in a group), and each group references a tier. When an account is created, I want the expiration field of the account to be:
(time since epoch in seconds)+(the new account's assigned group's tier's TTL [days] in seconds) which I have tried to achieve like so: Field('expiration', 'time', required=True, notnull=True, default=time(), writable=False, represent=lambda expiration, row: datetime.datetime.fromtimestamp(int(expiration)), compute=lambda row: time()+row.batch.tier.ttl*24*60*60) note that row.batch is the account's reference to a group (but it can't be called group since that is a reserved word) This produced problems with compute, so I circumvented by commenting it out and adding this to the creation/insert controller: group = __get_group() db.accounts.batch.default = group.id db.accounts.expiration.default = time()+(group.tier.ttl*24*60*60) form = crud.create(db.accounts, message='Account Created', next=URL( 'accounts','review')+'/[id]') I am missing something... because now i'm getting: <type 'exceptions.ValueError'> need more than 2 values to unpack ...stumped. On Wednesday, December 12, 2012 12:18:58 PM UTC-8, David Tucker wrote: > > I am having a similar problem. I did an insert using crud.create and it > went through, but now I get the error described above whenever I do > anything related to tht table... I tried this, but my notnull constraint > got in the way so I tried: > > db(db.youtable.id>0).update(thedatetimefield=datetime.datetime.utcnow()) > > and now I'm getting this traceback: > > Traceback (most recent call last): > File "gluon/main.py", line 564, in wsgibase > File "gluon/dal.py", line 529, in close_all_instances > File "gluon/dal.py", line 509, in close > File "gluon/dal.py", line 1652, in commit > OperationalError: SQL logic error or missing database > > > Any idea what's going on? > > > On Sunday, April 5, 2009 10:01:13 PM UTC-7, mdipierro wrote: >> >> Let me guess... you changed a field from 'string' to 'datetime' using >> sqlite? sqlite does not enforces field types hence it let you do the >> migration even if there was data in there that is not of type >> 'datetime'. You need to clean up that column. >> >> In your model do this >> >> db(db.youtable.id>0).update(thedatetimefield=None) >> >> run appadmin once than remove the above line. >> >> Massimo >> >> >> >> On Apr 5, 9:10 pm, "web2py <<<at>>> technicalbloke.com" >> <technicalbl...@googlemail.com> wrote: >> > Hi, >> > >> > Somehow (don't ask me how!) I've managed to bork my database :-/ >> > Appadmin let's me see all my tables except one, when I click on it's >> > name it spews the message below. I don't care about the data inside, >> > I'd just like to have my database rebuilt from the model so what's the >> > best way to do that? >> > >> > db.my_table.truncate? >> > db.my_table.drop? >> > delete the contents of the 'databases' folder? >> > >> > Traceback (most recent call last): >> > File "/rahrahrah/web2py/gluon/restricted.py", line 98, in restricted >> > exec ccode in environment >> > File "/rahrahrah/web2py/applications/tcrm/views/appadmin.html", line >> > 102, in <module> >> > File "/rahrahrah/web2py/gluon/sqlhtml.py", line 605, in __init__ >> > for (rc, record) in enumerate(sqlrows): >> > File "/rahrahrah/web2py/gluon/sql.py", line 2127, in __iter__ >> > yield self[i] >> > File "/rahrahrah/web2py/gluon/sql.py", line 2082, in __getitem__ >> > str(value)[:10].strip().split('-')] >> > ValueError: need more than 1 value to unpack >> > >> > Cheers, >> > >> > Roger. > > --