The most suspicious thing is self.__dict__['foo'] = list() as well as the 
direct access to self.__dict__['foo'].  If "self" is a mapped object, then 
thats your issue.

Also note this is still an out of context cut-and-paste, if you really want me 
to figure it out it has to be an isolated test script.


On Nov 19, 2010, at 2:49 PM, Alvaro Reinoso wrote:

> Ok, This is the code:
> 
>       @staticmethod
>       def insert(string, mode):
>               """Insert a new item given a string"""
>               screenGroup = ScreenGroup()
>               session = rdb.Session()
> 
>               try:
>                       if mode == "XML":
>                               screenGroup.fromXML(string)
>                       elif mode == "JSON":
>                               screenGroup.fromJSON(string)
>                       if screenGroup.id == None:
>                               session.add(screenGroup)
>                       else:
>                               screenGroup = session.merge(screenGroup)
> 
>                       session.flush()
>                       result = "Successful:" + str(screenGroup.id) + "," +
> screenGroup.title
>                       return result
>               except Exception, e:
>                       log.warn("::ScreenGroupManager, insert > The error is " 
> + str(e))
>                       return "<WARN>Error connecting to the database. Please 
> try again
> later.</WARN>"
> 
>               return "<WARN>Error connecting to the database. Please try again
> later.</WARN>"
> 
> This is the function where it gets the error. When I already have the
> item and I merge It works out. However, if it's a new item, breaks.
> This anothe fromXML function:
> 
>       def fromXML(self, data):
>               """Unserializes this class from an XML formatted file or 
> string."""
>               root = ""
>               try:
>                       if(data.endswith(".xml")):
>                               doc = etree.parse(data)
>                               root = doc.getroot()
>                       else:
>                               root = etree.XML(data)
>               except etree.XMLSyntaxError, e:
>                       print e
>                       pass
> 
>               if not type(root) == type(etree.XML("<data>test</data>")):
>                       return
> 
>               if root.tag == "screenGroup":
>                       for child in root.iterchildren():
>                               if child.tag == "screens" or child.tag == 
> "screenGroups":
>                                       if child.text:
>                                               items = child.text.split(",")
>                                               self.__dict__[child.tag] = 
> list()
>                                               for itemId in items:
>                                                       if child.tag == 
> "screens":
>                                                               item = 
> ScreenManager.getScreenById(itemId)
>                                                       else:
>                                                               item = 
> ScreenGroupManager.getGroupScreenById(itemId)
>                                                       
> self.__dict__[child.tag].append(item)
>                               else:
>                                       self.setAttr(child.tag, child.text)
> 
> ScreenManager.getScreenById(itemId) and
> ScreenGroupManager.getGroupScreenById(itemId) just get the item from
> the database (session.query(Screen).get(int(itemId))).
> 
> This is the XML string : <screenGroup><title>Group 10</
> title><screens>4,3</screens><screenGroups></screenGroups></
> screenGroup>
> 
> Thanks!
> 
> On Nov 18, 7:07 pm, Michael Bayer <mike...@zzzcomputing.com> wrote:
>> looks fine to me, would need full stack trace + single script file of 
>> runnable, reproducing code, thanks.
>> 
>> On Nov 18, 2010, at 6:37 PM, Alvaro Reinoso wrote:
>> 
>>> Hello,
>> 
>>> When trying to add a new item doing:
>> 
>>> session = session.add(mediaGroup)
>> 
>>> I got this error:
>> 
>>> Module sqlalchemy.orm.attributes:834 in get_collection
>>>   return getattr(user_data, '_sa_adapter')
>>>   class GenericBackrefExtension(interfaces.AttributeExtension):>>
>>> return getattr(user_data, '_sa_adapter')
>> 
>>> "AttributeError: 'list' object has no attribute '_sa_adapter'"
>> 
>>> This object's class:
>> 
>>> class ScreenGroup(rdb.Model):
>>>    """The ScreenGroup is a class derived from ScreenGroup, it is used to
>>> control users within a group"""
>>>    rdb.metadata(metadata)
>>>    rdb.tablename("screen_groups")
>> 
>>>    id = Column("id", Integer, primary_key=True)
>>>    title = Column("title", String(100))
>>>    parents = Column("parents", String(512))
>> 
>>>    screens = relationship("Screen", secondary=group_screens,
>>> order_by="Screen.title", backref="screen_groups")
>>>    screenGroups = relationship("ScreenGroup",
>>> secondary=screen_group_groups, order_by="ScreenGroup.title",
>>>            primaryjoin=lambda: ScreenGroup.id ==
>>> screen_group_groups.c.screen_groupA_id,
>>>            secondaryjoin=lambda: ScreenGroup.id ==
>>> screen_group_groups.c.screen_groupB_id,
>>>            backref="screen_groups")
>> 
>>> Thanks in advance!
>> 
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "sqlalchemy" group.
>>> To post to this group, send email to sqlalch...@googlegroups.com.
>>> To unsubscribe from this group, send email to 
>>> sqlalchemy+unsubscr...@googlegroups.com.
>>> For more options, visit this group 
>>> athttp://groups.google.com/group/sqlalchemy?hl=en.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To post to this group, send email to sqlalch...@googlegroups.com.
> To unsubscribe from this group, send email to 
> sqlalchemy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sqlalchemy?hl=en.
> 

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

Reply via email to