OK, the "_sa_instance_state" message was kind of cryptic, but it
actually contained accurate information (that the problem came from my
list, badly configured).
Thanks !

On May 18, 11:03 pm, Michael Bayer <[email protected]> wrote:
> On May 18, 2012, at 12:08 PM, Vinz wrote:
>
> > Hi all,
> > I'm writing some tests for my SqlAlchemy DB using the fixtures module,
> > and I'm currently trying to populate a one to many relationship.
> >http://farmdev.com/projects/fixture/using-dataset.html#referencing-fo...
>
> >  File "/usr/local/lib/python2.6/dist-packages/fixture/base.py", line
> > 71, in setup
> > [ bla bla ... ]
> > File "/usr/local/lib/python2.6/dist-packages/sqlalchemy/orm/
> > attributes.py", line 654, in get_all_pending
> >    ret = [(instance_state(current), current)]
> > LoadError: AttributeError: 'list' object has no attribute
> > '_sa_instance_state' (with 'my_address' of
>
> OK just for future reference, the "bla bla" part here is actually quite 
> important in revealing what the issue is.   In this case it is likely that 
> you're appending a list  somewhere, where a mapped object is expected, such 
> as:
>
> myobject.some_attribute = []
>
> or
>
> myobject.some_collection.append([])
>
> but there might be configurational issues with the testing package you're 
> using that's leading to this (so perhaps check with them).
>
>
>
> > Where can I find some documentation about _sa_instance_state ? (didn't
> > find what that is)
>
> yeah unfortunate python issue here, this is SQLAlchemy attempting to procure 
> an internal tracking object present on all mapped objects called 
> "InstanceState".   We use an "attribute getter" to get this, which is because 
> it's very fast compared to a plain function, but the downside is in a lot of 
> areas of the code we aren't transforming this attribute error into a nicely 
> descriptive message (something which can be improved).    The error means, 
> "'list' instance is not a mapped object".
>
>
>
> > Also, I don't quite understand the following warning from the fixture-
> > s doc :
> > "
> >>>> class Books(DataSet):
> > ...     class two_worlds:
> > ...         title = "Man of Two Worlds"
> > ...         authors = [Authors.frank_herbert, Authors.brian_herbert]
>
> > However, in some cases you may need to reference an attribute that
> > does not have a value until it is loaded, like a serial ID column.
> > (****Note that this is not supported by the SQLAlchemy data layer when
> > using sessions****.) To facilitate this, each inner class of a DataSet
> > gets decorated with a special method, ref(), that can be used to
> > reference a column value before it exists, i.e.:
>
> this isn't a SQLAlchemy question.  Contact the author of that package for 
> this.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to