Hello, I'm writing tests for my database, and I've run into a little bit of confusion.
Say I have a class (we'll call it person) with two declared attributes that correspond to db columns: person.id person.name If I randomly assign a person object another attribute dynamically: person.undeclared_value = 'New' That value doesn't get stored in the database. (That part I expected and understand). What I don't understand is if I commit the object, set it to None (to presumably garbage collect it) and then reacquire it from the DB, sometimes that dynamically declared attribute is still pesent: person = Person() person.name = 'John Smith' person.new_attr = 'New' commit() id = person.id #id isn't assigned till after a commit person = None person = Person.get_by(id=id) #This is expected to be true assert person.name = 'John Smith' #This is expected to yield an AttributeError, but sometimes it doesn't assert person.new_attr = 'New' Based on my tests, it appears that the sometimes it doesn't is whenever there are relationships created in the session. If I only create one object and follow the above pattern, I get the expected results. If I create two objects and the relationship between them, then I get the unexpected results. Does anyone have any idea what might be going on? I think the object is getting stored in the session, and when I reobtain the object it just uses the reference in the session. Thanks, Mike PS I'm using Elixir, although I don't expect that to make a difference. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@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 -~----------~----~----~----~------~----~------~--~---