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'}, ] )

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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to