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.