Hi Guys,
Currently I'm maintaining a python-2.5 (pylons) webapplication, which uses sqlaclhemy as its ORM. I've been messing around for some time with this (quite stupid) problem, but still can't het it to work the way I want it to. Situation: There's 2 tables, Fiber and Line. A line consists of a (or maybe in the future, more) Fiber. My definitions: fiberdb=# \d "Fiber"; Table "public.Fiber" Column | Type | Modifiers ------------------------+-------------------------- +----------------------------------------------------------- FiberID | integer | not null default nextval('"Fiber_FiberID_seq"'::regclass) LineName | character varying(50) | FiberUsed | character(1) | Indexes: "PRI_Fiber" PRIMARY KEY, btree ("FiberID") "FKI_Fiber_Line" btree ("LineName") "fki_" btree ("LineName") Foreign-key constraints: "FK_Fiber_Line" FOREIGN KEY ("LineName") REFERENCES "Line"("LineName") ON UPDATE CASCADE ON DELETE RESTRICT fiberdb=# \d "Line"; Table "public.Line" Column | Type | Modifiers ----------------------------+----------------------------- +--------------------------------------------------------- LineName | character varying(50) | not null "PRI_Line" PRIMARY KEY, btree ("LineName") As you can see, pretty straightforward. But, in my code I'd like to search for all Fibers which belong to a group of Lines. The Lines are chosen by the user , and I'd like to filter these Fibers depending on some conditions (like FiberUsed = True). Because there might be a lot of branches for this search (as we add options to the search engine, branches in the code will be added to), I'd like to do the join seperately in the head of the function and save the result of the join in some variable. This variable should be used in the branches of my code. This allows me to easily change the join conditions without changing the join in 10 branches of my code. My current code is like this: def _get_list_Lines_between_Sites(self, site1, site2, LineDiscarded): query = models.Session.query (models.Line) if site2 == None: return query.filter(and_ (models.Line.LineDiscarded == LineDiscarded, or_ (models.Line.SiteLocationCodeA == site1,models.Line.SiteLocationCodeB == site1))) else: return query.filter(and_ (models.Line.LineDiscarded == LineDiscarded, or_(and_ (models.Line.SiteLocationCodeA == site1,models.Line.SiteLocationCodeB == site2),and_(models.Line.SiteLocationCodeA == site2,models.Line.SiteLocationCodeB == site1) ))) The "query = " seems to be pretty invalid, but although I've tried about 10 alternatives (3 parameter for the join, using quotes, not using quotes, etc), I can't get this to work. Would anybody mind giving me a hand on this one? Yours sincerely, Boudewijn Ector --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---