and of course, both the passwords -are- the same (duh ;) .. the 'get()' works fine (obviously ;)
Regards Stef On Wed, Feb 25, 2009 at 7:53 PM, Stephen Telford <stelford1...@gmail.com>wrote: > Thank you Bobby!! That does make things more easier, and it shows then that > I am being a -real- moron here.. > > from sqlalchemy import * > from sqlalchemy.orm import sessionmaker, mapper, relation > > meta = MetaData() > meta.bind = 'postgres://root:sxta...@192.168.2.198/compass_master' > > engine = create_engine('postgres:// > root:mypassw...@192.168.2.198/compass_master', echo=True) > Session = sessionmaker(bind=engine) > session = Session() > > > trip_table = Table('trip', meta, autoload=True) > class Trip(object): > id = Column(Integer, primary_key=True) > trip = mapper(Trip, trip_table) > > trip_pc_table = Table('trip_parent_child', meta, autoload=True) > class TripParentChild(object): > parent_id = Column(Integer, ForeignKey('Trip.id'), nullable=False) > parent = relation(Trip) > child_id = Column(Integer, ForeignKey('Trip.id'), nullable=False) > child = relation(Trip) > trip_pc = mapper(TripParentChild, trip_pc_table) > > Trip.children = relation(Trip, secondary = trip_table, primaryjoin = > TripParentChild.parent_id == Trip.id, secondaryjoin=TripParentChild.child_id > == Trip.id) > Trip.parent = relation(Trip, secondary = trip_table, primaryjoin = > TripParentChild.child_id == Trip.id, secondaryjoin=TripParentChild.parent_id > == Trip.id) > > s = session.query(Trip).get(194143) > print s.children > > results in a very nice stack trace; > > Traceback (most recent call last): > File "./s.py", line 37, in <module> > print s.children > File > "/usr/lib/python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/orm/properties.py", > line 628, in __str__ > return str(self.parent.class_.__name__) + "." + self.key > AttributeError: 'RelationProperty' object has no attribute 'parent' > > > Any thoughts ? I suspect some attempt at 'black magic' in regards to the > parent_id > > Regards > Stef > > > > On Wed, Feb 25, 2009 at 7:05 PM, Bobby Impollonia <bob...@gmail.com>wrote: > >> >> I am doing something similar. The following code works for me in SQLA .4.8 >> class Foo(Base): >> __tablename__ = 'foo' >> id = Column(Integer, primary_key=True) >> >> bar_table = Table('bar', Base.metadata, >> Column('parent_id', Integer, ForeignKey('foo.id'), nullable=False), >> Column('child_id', Integer, ForeignKey('foo.id'), nullable=False)) >> >> Foo.children = relation(Foo, secondary = bar_table, primaryjoin = >> bar_table.c.parent_id == Foo.id, secondaryjoin=bar_table.c.child_id == >> Foo.id, backref='parents') >> >> On Wed, Feb 25, 2009 at 3:12 PM, Stephen Telford <stelford1...@gmail.com> >> wrote: >> > Okay, that sounds like a plan but., not to sound too much like a broken >> > record, does anyone have an -actual- example ? looking at pages with a >> lot >> > of API's is not really going to help me too much :( >> > >> > This maybe slightly off-topic and it's really NOT meant as flamebait >> but.. I >> > remember a while ago playing around with DBIx (the perl ORM) and one of >> the >> > things that -really- made it easy to get to grips with as the >> > DBIx::Cookbook. It maybe a good idea to fling something similiar into >> the >> > sqlalchemy documentation... >> > >> > if I had more experience I would write it but.. yes. It definitely is >> the >> > quickest ORM I have seen/used, but, all the speed is for naught if you >> hit >> > the 20% wall. >> > >> > Regards >> > Stef >> > >> > On Wed, Feb 25, 2009 at 4:21 PM, Michael Bayer < >> mike...@zzzcomputing.com> >> > wrote: >> >> >> >> check out the association proxy extension if you're looking to have >> "Bar" >> >> be "hidden" as an association object. it will ultimately use Foo/Bar >> for >> >> querying but attribute access would be proxied through the names you >> >> confgure. >> >> >> >> On Feb 25, 2009, at 4:11 PM, Stephen Telford wrote: >> >> >> >> Hello Az, >> >> Yes, Bar is the association table of Foo to Foo. In essence, this >> is a >> >> self join through a join table.. I have tried and hit my head on this >> for >> >> (quite literally) hours. In the end, and for the record, I ended up >> creating >> >> a method on the model itself such as ; >> >> >> >> def children(self): >> >> childFoo=Foo.__table__.alias() >> >> return >> >> object_session(self).query(Foo).filter(and_(childFoo.c.deleted == 0, >> >> childFoo.id <> self.id, self.id == Bar.parent_id)) >> >> >> >> Not the prettiest way, nor what I would expect, but in lieu of an >> >> actual example, and to help anyone who ends up treading the same path >> as me, >> >> I hope this helps. >> >> >> >> Regards >> >> Stef >> >> >> >> On Wed, Feb 25, 2009 at 4:29 AM, <a...@svilendobrev.com> wrote: >> >>> >> >>> u mean, the Bar is an association table of Foo to Foo? >> >>> u have to use secondary_table and/or secondary_join in the relation >> >>> setup. And probably specify remote_side or it may not know which Foo >> >>> is what. >> >>> >> >>> On Wednesday 25 February 2009 03:39:20 Stef wrote: >> >>> > Hello Everyone, >> >>> > First of all, kudos on SQLAlchemy.. the speed is pretty amazing >> >>> > - I am coming from the SQLObject world and there is a definite >> >>> > difference. Excellent work. I am also getting to grips with it >> >>> > pretty quickly, using object_session and all that good stuff. This >> >>> > said, I have hit that 20% problem, and am hoping someone can shine >> >>> > a light on it. >> >>> > >> >>> > I have a table, lets call it Foo and another table Bar. Foo >> >>> > should be able to get a list of it's parents via Bar or it's >> >>> > children via Bar. I am also using the declarative_base system >> >>> > rather than table/ mapper defined seperately. >> >>> > >> >>> > class Foo(Base): >> >>> > id = Column(Integer, primary_key=True) >> >>> > >> >>> > class Bar(Base): >> >>> > parent_id = Column(Integer, default=0) >> >>> > child_id = Column(Integer, default=0) >> >>> > >> >>> > So, I thought something like ; children = relation(Foo, >> >>> > backref=backref('parents'), primaryjoin=and_(Foo.id==Bar.parent_id) >> >>> > >> >>> > But that's where I hit the 'wall' as it were, is there a way to >> >>> > setup a synonym for Foo in the primaryjoin clause ? Am I missing >> >>> > something stupid ? (I am okay with that ;) >> >>> > >> >>> > Regards >> >>> > Stef >> >>> > >> >>> >> >>> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> > >> > >> > > >> > >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---