Did you try checking that all the references exist?  
So, maybe it is a referential integrity problem.
You are prob not using Sqlite but a proper DB.
Just ideas,  D


On Wednesday, August 22, 2012 8:23:23 PM UTC+1, Mike Girard wrote:
>
> Yeah. A result of switching it off and then back on. 
>
> Good catch. 
>
> On Wed, Aug 22, 2012 at 3:19 PM, Anthony <abas...@gmail.com 
> <javascript:>>wrote:
>
>> I assume this is a typo too, but just to be sure:
>>
>> Field('genres','string','list:reference genre', ...
>>
>> You have both 'string' and 'list:reference' there.
>>
>> Anthony
>>
>>
>> On Wednesday, August 22, 2012 2:49:29 PM UTC-4, Mike Girard wrote:
>>
>>> I have written a script to parse a large xml file and insert the 
>>> contents in to my app db. I am using lxml.
>>>
>>> After about 10 records get inserted, the script fails with 
>>> <type 'exceptions.TypeError'> argument of type 'NoneType' is not iterable
>>>
>>> Troubleshooting determined the following:
>>>
>>> 1. This error is associated with 3 list:reference fields. When I remove 
>>> them from the script, the script executes uneventfully. If any one of them 
>>> is included, it fails.
>>> 2. This only happens after 10 records have been successfully inserted.
>>> 3. There is no discernible difference between the records that get 
>>> successfully added and those that don't. The error happens even when I hard 
>>> code the lists for the list:reference field. It seems to be associated with 
>>> number of records, rather than which records. 
>>> 4. The script executes successfully when I change the field types from 
>>> 'list:reference' to 'string' and insert strings instead of lists. You 
>>> should not assume from this that there is a data issue. As I said, 
>>> hardcoded lists get rejected also. I am 99% certain valid data is not the 
>>> issue.
>>> 5. This happens in both SQLLite and Postgres
>>>
>>> Here is the model declaration for one of the three fields. They are all 
>>> analogous:
>>>
>>> Field('genres','string','list:**reference genre', requires=IS_IN_DB(db, 
>>> 'genre.id', '%(name)s [%(id)s]', multiple=True))
>>>
>>> Here is how I update each new row in the  the database:
>>>
>>> db.movies.validate_and_insert(****movie) (movie is a dict)
>>>
>>> Here is how I hardcoded values into the fields: movie['genre'] = {456, 
>>> 368, 239]
>>>
>>> Now, if someone doesn't have a solution, can they tell me if I can 
>>>
>>> 1.Programmatically remove the list:reference from the model prior to 
>>> data updates and programmatically restore it afterwards?
>>> 2. Retain all the functionality of these fields by toggling this way? 
>>>
>>> Seriously considering going the join table route and skipping the list 
>>> reference fields. Are there any gotchas there? 
>>>
>>>
>>>
>>>
>>>  -- 
>>  
>>  
>>  
>>
>
>

-- 



Reply via email to