Hey Mike, Yeah, I see the problem -- didn't mean it to come across as criticism of how things are! :)
Personally, I'm a big fan of extreemly verbose error messages, with suggestions, sample code, or even usage cases when possible -- either in the error message itself or referenced by an error number somewhere in the docs. I'm not saying it's critical, but are you in a position to offer any constructive first-level advice like "Are all the tables explicitly related to eachother?" or "Did you forget to add a secondary table to the 'relation()' argument?" or something equivilent? Maybe just having it note back to a specific place in the documentation for future suggestions, steps to repro and solve? -G On Sunday, April 23, 2006, 11:09:44 PM, you wrote: > hey gambit - > a cohesive error message begins as what it literally is before it can > be refined into a more descriptive case, based on observation of what > actually makes it occur. when i wrote that message, i had no idea > what conditions would create it. now we are getting a better idea so > its a candidate for a text change, along the lines of "primary join > does not contain required table 'X'". does that help ? > On Apr 23, 2006, at 4:13 PM, Gambit wrote: >> Hey Mike, >> >> Speaking from a debugging point of view, it might be useful if >> error messages >> get more text then just "it failed, and died". Even if you just >> attached your >> paragraph at the bottom starting "So when the..." either to the >> error itself >> (always useful!) or somewhere in the docs (which, docstrings or no, >> don't have >> any instances of 'syncrule' in them) it would put that snippet in >> the first >> couple of places someone encountering the error is going to look. >> So maybe a >> "Error Messages" section at the end of the docs? >> -G >> >> On Sunday, April 23, 2006, 9:42:49 PM, you wrote: >>> a syncrule is an object generated internally when you associate one >>> Mapper with another Mapper via a relation(), which is actually an >>> object called a PropertyLoader. >> >>> so lets use the Users/Address example. say we have classes User and >>> Address. the join condition is >>> users.c.user_id==addresses.c.user_id . When you attach the Address >>> to the User and do a save, the "user_id" property of the User object >>> is copied to the Address object. That is done by a syncrule. The >>> syncrule is generated at mapper construction time by looking at the >>> tables inside of "users.c.user_id==addresses.c.user_id", i.e. "users" >>> and "addresses", matching those up to the mappers for the User and >>> Address classes, and correlating the "user_id" column to the >>> appropriate attribute in the User and Address class. the SyncRule >>> then has an execute() method that is called at save time, which >>> copies a single attribute from source to destination, in this case >>> copying the "user_id" attribute from a User object to an Address >>> object. >> >>> So when the relation system has that error with "no syncrules >>> generated", its a sign that the join conditions of the relationship >>> do not correspond to the tables represented by the mappers. >> >>> the code for this is pretty well isolated and docstring'ed in the >>> module sqlalchemy.mapping.sync, containing the two objects >>> ClauseSynchronizer and SyncRule. >> >> >>> On Apr 23, 2006, at 1:50 PM, Gambit wrote: >> >>>> Hey All, >>>> >>>> For the line: >>>> Customer.mapper.add_property('checkout_history', relation >>>> (CheckoutEntry.mapper, t_customer_tours, >>>> primaryjoin=Customer.c.cust_id==CustomerTour.c.cust_id, >>>> secondaryjoin=and_(CustomerTour.c.start_date <= >>>> CheckoutEntry.c.ts_checkout, >>>> >>>> >>>> CoreDb.CustomerTour.c.finish_date >= CheckoutEntry.c.ts_checkout))) >>>> it generates the following error: >>>> >>>> ArgumentError: No syncrules generated for join criterion >>>> customer_tours.start_date <= checkout_trail.ts_checkout AND >>>> customer_tours.finish_date >= checkout_trail.ts_checkout >>>> >>>> It turns out that that property is, well, not what I wanted in the >>>> first place >>>> (there's no explicit 1:1 relationship between Customer and >>>> CustomerTour, >>>> amongst other things) but I am pretty curious what a syncrule is, >>>> what causes >>>> it to be generated (or not generated), and, if I encounter it >>>> again, what >>>> should I look for? >>>> >>>> I'm sure it must make sense to /someone/, but as a user I'm left >>>> scratching my >>>> head :) >>>> >>>> Cheers, >>>> -G >>>> >>>> >>>> >>>> >>>> ------------------------------------------------------- >>>> Using Tomcat but need to do more? Need to support web services, >>>> security? >>>> Get stuff done quickly with pre-integrated technology to make your >>>> job easier >>>> Download IBM WebSphere Application Server v.1.0.1 based on Apache >>>> Geronimo >>>> http://sel.as-us.falkag.net/sel? >>>> cmd=lnk&kid=120709&bid=263057&dat=121642 >>>> _______________________________________________ >>>> Sqlalchemy-users mailing list >>>> Sqlalchemy-users@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users >> >> >> >> ------------------------------------------------------- >> Using Tomcat but need to do more? Need to support web services, >> security? >> Get stuff done quickly with pre-integrated technology to make your >> job easier >> Download IBM WebSphere Application Server v.1.0.1 based on Apache >> Geronimo >> http://sel.as-us.falkag.net/sel? >> cmd=lnk&kid=120709&bid=263057&dat=121642 >> _______________________________________________ >> Sqlalchemy-users mailing list >> Sqlalchemy-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users > ------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Sqlalchemy-users mailing list > Sqlalchemy-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users ------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Sqlalchemy-users mailing list Sqlalchemy-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users