One other troubleshooting detail: I did type(obj) on the dict, 'movie' as well as all the items inside it. They all check out. No 'None's anywhere.
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? > > > > > --