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

Reply via email to