At first I found quite elegant to have one Query object per mapped class, but now I'm wondering if it's not better after all to have a bunch of @staticmethod in the model ...
What do you think ? On 10/13/2010 11:21, Julien Cigar wrote:
On 10/12/2010 18:05, Julien Cigar wrote:On 10/12/2010 17:09, Michael Bayer wrote:On Oct 12, 2010, at 7:39 AM, Julien Cigar wrote:Hello, any idea why with # Query class BaseQuery(orm.Query): @dynamic def method_a(self): ... def method_b(self): ... class FooQuery(BaseQuery): ... class BarQuery(FooQuery): @dynamic def method_c(self): ... # Models class BaseModel(object): query = Session.query_property(BaseQuery) # myQuery = type('PolymorphicQuery, (content.BaseQuery, ), func_list)(BaseModel) where "func_list" containing all the functions decorated by @dynamic the following fail? : - myQuery.get(45) fails with: AttributeError: 'NoneType' object has no attribute 'identity_map' - myQuery.method_a().all() fails with: AttributeError: 'NoneType' object has no attribute '_autoflush' - etcOK I think I found a solution, I need to pass session=Session.registry() to my custom query: >>> model.content.ContentQuery.__mro__ (<class 'amnesia.model.content.ContentQuery'>, <class 'amnesia.model.root.RootQuery'>, <class 'sqlalchemy.orm.query.Query'>, <type 'object'>) >>> PolymorphicQuery = type('PolymorphicQuery', (model.content.ContentQuery, ), {}) >>> q1 = PolymorphicQuery(model.Content) >>> q1.get(25) Traceback (most recent call last): File "<console>", line 1, in <module> File "/home/jcigar/venvs/pylons0.9.7/lib/python2.5/site-packages/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/orm/query.py", line 595, in get return self._get(key, ident) File "/home/jcigar/venvs/pylons0.9.7/lib/python2.5/site-packages/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/orm/query.py", line 1803, in _get instance = self.session.identity_map.get(key) AttributeError: 'NoneType' object has no attribute 'identity_map' >>> q2 = PolymorphicQuery(model.Content, session=meta.Session.registry()) >>> q2.get(25) <amnesia.model.event.Event object at 0x939046c> I hope I'm not doing something wrong :pMy goal is to be able to build a custom Query object to use with the .with_polymorphic() function ..I've just grepped through all the source, examples and tests plus the wiki trying to find what @dynamic is. Seems like something I'd have come up with in the past but I've no clue at the moment what that is.Sorry, I forgot to mention that it's just a custom decorator of mine which add the function name to a list ... forget about it, it's just to build the third argument of type() (func_list in my case)
-- No trees were killed in the creation of this message. However, many electrons were terribly inconvenienced. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@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.
<<attachment: jcigar.vcf>>