I did do db.commit from the shell. Still no duplicate in the appadmin. 

On Saturday, August 18, 2012 3:12:39 PM UTC-4, Anthony wrote:
>
> In the shell, the transaction won't actually be committed until you do 
> db.commit() (in your app code, you do not have to call db.commit() because 
> it will be called automatically at the end of the request). Also, when you 
> use .insert(), the validators don't run -- they only run when using SQLFORM 
> or when you insert via .validate_and_insert().
>
> Anthony
>
> On Saturday, August 18, 2012 2:50:18 PM UTC-4, Mike Girard wrote:
>>
>> In preparation for doing a bulk insert into my app's tables I have been 
>> doing some testing from the web2py shell.
>>
>> I issued the following command:
>>
>> >>db.person.insert(name = 'Dustin Hoffman')
>>
>> person.name has a unique=true setting as well as an IS_NOT_IN_DB form 
>> constraint. Dustin Hoffman is already in the database. 
>>
>> The response for running this command was an id number (118)  suggesting 
>> the record had been added. However, when I looked at the person records via 
>> /myapplication/appadmin, it wasn't there and the id of the last record was 
>> 117. This is fine, suggesting that the uniqueness constraint had been 
>> applied.
>>
>> However, when I went back to the shell and issued this command -
>>
>> >> db.person(118) 
>>
>> - It returned a row.  Also
>>
>> >> db.person(name='Dustin Hoffman').count
>> >> 2
>>
>> So it seems as if the duplicate record is in the db, though it doesn't 
>> show up in the browser.
>>
>> Two questions, then:
>>
>> 1. Why is the duplicate record not showing up in /myapplication/appadmin
>> 2. If I want a script where duplicates are just rejected without special 
>> handling, should I just use insert_and_validate? What if I am doing a bulk 
>> insert or a csv import? 
>>
>>

-- 



Reply via email to