On Friday, July 8, 2016 at 6:31:29 PM UTC-7, Marlysson Silva wrote:
>
> The keys of dictionary of bulk_insert are fields of table that you want
> you insert.
> Try so:
>
> db.bank.bulk_insert([ {'name' : 'bank0', 'website' : 'http://www.bank0.com
> '}, {'name' : 'bank1', 'website' : 'http://www.bank1.com'}, ] )
>
>
That's what he did, except for the typo. But what caused the first ticket
seems to be already having an index.
/dps
> Em sexta-feira, 8 de julho de 2016 21:47:42 UTC-3, 黄祥 escreveu:
>>
>> let say i have a code:
>> *models/db_wizard_1_bank.py*
>> db.define_table('bank',
>> Field('name'),
>> Field('website'),
>> format = '%(name)s')
>>
>> *controllers/install.py*
>> def index():
>> if db(db.auth_permission).isempty() and db(db.auth_membership).isempty():
>> # create index : auth_user
>> db.executesql('CREATE INDEX idx_auth_user ON auth_user (id, first_name,
>> last_name, email, username);')
>>
>> # insert : bank
>> db.bank.bulk_insert([
>> {'name1' : 'bank0', 'website' : 'http://www.bank0.com'},
>> {'name' : 'bank1', 'website' : 'http://www.bank1.com'}, ] )
>>
>> session.flash = T('Installation Done')
>> redirect(URL('default', 'index') )
>>
>> as you can see, i made a mistake during insert to table bank field name1
>> (incorrect), should be field name in table bank, but the traceback error
>> said is different.
>>
>> what i got in traceback error :
>>
>> Traceback (most recent call last):
>> File "/Users/MacBookPro/site/web2py/gluon/restricted.py", line 227, in
>> restricted
>> exec ccode in environment
>> File
>> "/Users/MacBookPro/site/web2py/applications/test/controllers/install.py"
>> <http://127.0.0.1:8000/admin/default/edit/mutualfunds/controllers/install.py>,
>> line 412, in <module>
>> File "/Users/MacBookPro/site/web2py/gluon/globals.py", line 417, in
>> <lambda>
>> self._caller = lambda f: f()
>> File
>> "/Users/MacBookPro/site/web2py/applications/test/controllers/install.py"
>> <http://127.0.0.1:8000/admin/default/edit/mutualfunds/controllers/install.py>,
>> line 9, in index
>> db.executesql('CREATE INDEX idx_auth_user ON auth_user (id, first_name,
>> last_name, email, username);')
>> File "/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/base.py",
>> line 1019, in executesql
>> adapter.execute(query)
>> File
>> "/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/adapters/base.py",
>> line 1388, in execute
>> return self.log_execute(*a, **b)
>> File
>> "/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/adapters/base.py",
>> line 1382, in log_execute
>> ret = self.get_cursor().execute(command, *a[1:], **b)
>> OperationalError: index idx_auth_user already exists
>>
>> Error snapshot [image: help]
>> <http://127.0.0.1:8000/admin/default/ticket/mutualfunds/127.0.0.1.2016-07-09.07-29-57.44b25bca-2458-4de3-b035-ea50bb8f2522#>
>>
>> <class 'sqlite3.OperationalError'>(index idx_auth_user already exists)
>>
>> again, same code with different structure order (insert first then create
>> index) in install.py
>> *controllers/install.py*
>> def index():
>> if db(db.auth_permission).isempty() and db(db.auth_membership).isempty():
>> # insert : bank
>> db.bank.bulk_insert([
>> {'name1' : 'bank0', 'website' : 'http://www.bank0.com'},
>> {'name' : 'bank1', 'website' : 'http://www.bank1.com'}, ] )
>>
>> # create index : auth_user
>> db.executesql('CREATE INDEX idx_auth_user ON auth_user (id, first_name,
>> last_name, email, username);')
>>
>> session.flash = T('Installation Done')
>> redirect(URL('default', 'index') )
>>
>> as you can see, i made a mistake during insert to table bank field name1
>> (incorrect), should be field name in table bank, but the traceback error
>> said is straight to the point to show where is my mistake.
>>
>> what i got in traceback error :
>>
>> Traceback (most recent call last):
>> File "/Users/MacBookPro/site/web2py/gluon/restricted.py", line 227, in
>> restricted
>> exec ccode in environment
>> File
>> "/Users/MacBookPro/site/web2py/applications/test/controllers/install.py"
>> <http://127.0.0.1:8000/admin/default/edit/mutualfunds/controllers/install.py>,
>> line 412, in <module>
>> File "/Users/MacBookPro/site/web2py/gluon/globals.py", line 417, in
>> <lambda>
>> self._caller = lambda f: f()
>> File
>> "/Users/MacBookPro/site/web2py/applications/test/controllers/install.py"
>> <http://127.0.0.1:8000/admin/default/edit/mutualfunds/controllers/install.py>,
>> line 55, in index
>> {'name' : 'bank1', 'website' : 'http://www.bank1.com'}, ] )
>> File "/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/objects.py",
>> line 828, in bulk_insert
>> listify_items = [self._listify(item) for item in items]
>> File "/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/objects.py",
>> line 641, in _listify
>> 'Field %s does not belong to the table' % name)
>> SyntaxError: Field name1 does not belong to the table
>>
>> Error snapshot [image: help]
>> <http://127.0.0.1:8000/admin/default/ticket/mutualfunds/127.0.0.1.2016-07-09.07-33-51.9c11b273-0758-4a3f-b258-e4df76325fda#>
>>
>> <type 'exceptions.SyntaxError'>(Field name1 does not belong to the table)
>>
>> the solution is either i comment the create index part or change the
>> order to get the clear traceback error, my question is it normal?
>>
>> thanks and best regards,
>> stifan
>>
>
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.