Any idea ? --- On Tue, 8/31/10, chaouche yacine <[email protected]> wrote:
> From: chaouche yacine <[email protected]> > Subject: [elixir] A simple print seems to disable relation updates from ids > To: "elixir" <[email protected]> > Date: Tuesday, August 31, 2010, 9:53 AM > Hi list, > > I tried to follow this advice from gaëtan > http://groups.google.com/group/sqlelixir/browse_thread/thread/43c76ab74be218e8/fb7fe0070edd56fa?#fb7fe0070edd56fa > to try to update a relation simply by passing the associated > id to it. (a.b_id = b.id and then assert a.b == b) > > But the following code shows that something is going wrong > when I print a.b before setting a.b_id and flushing. > > Versions : > > (my-coriolis)chaou...@jogger:/usr/share/pyshared/elixir$ > python -c "import elixir; print elixir.__version__" > 0.7.1 > (my-coriolis)chaou...@jogger:/usr/share/pyshared/elixir$ > python -c "import sqlalchemy; print sqlalchemy.__version__" > 0.5.8 > (my-coriolis)chaou...@jogger:/usr/share/pyshared/elixir$ > python --version > Python 2.6.5 > (my-coriolis)chaou...@jogger:/usr/share/pyshared/elixir$ > > > -------- > > > from elixir import * > > class BaseModel(Entity): > using_options(abstract=True) > def __repr__(self): > return "<%s '%s'>" % > (self.__class__.__name__,self.name) > > class Person(BaseModel): > using_options(tablename = "persons") > > name = Field(String) > city = ManyToOne("City") > > class Country(BaseModel): > """ > """ > using_options(tablename = "countries") > > name = > Field(String) > cities = > OneToMany("City") > > class City(BaseModel): > """ > """ > using_options(tablename = "cities") > > name = Field(String) > country = ManyToOne("Country") > persons = OneToMany("Person") > > algeria = None > algiers = None > blida = None > > def create(): > global algeria,blida,algiers > algeria = Country(name="Algeria") > algiers = City(name="Algiers") > blida = City(name="Blida") > session.commit() > > def load(): > global algeria,blida,algiers > algeria = Country.get(1) > algiers = City.get(1) > blida = City.get(2) > > metadata.bind = "postgres://some_db" > session.bind = > metadata.bind > setup_all() > drop_all() > create_all() > create() > load() > > # Uncomment this line and you'll get None the second time > you print algiers.country (after the flush) > print "before",algiers.country > algiers.country_id = algeria.id > session.flush() > print "after",algiers.country > print algeria.cities > > > > Any help appreciated. > > > > > > -- > You received this message because you are subscribed to the > Google Groups "SQLElixir" 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/sqlelixir?hl=en. > > -- You received this message because you are subscribed to the Google Groups "SQLElixir" 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/sqlelixir?hl=en.
