^^ I m so shameful
It works very well now. I post the subclass complete if anyone need it in future Base.metadata.create_all(engine) import sqlalchemy.orm.query from sqlalchemy.orm.query import Query class Query(Query): def __init__(self, *arg, **kw): print "I pass here" self._populate_existing = True super(Query, self).__init__(*arg, **kw) Session = scoped_session(sessionmaker(autocommit=True, bind=engine, query_cls=Query)) session = Session() The new query class must be passed to the session call. thx for all 2009/9/18 Alexandre Conrad <alexandre.con...@gmail.com> > > In Python, you have to pass "self" as first argument to all methods of a > class: > > class MyQuery(sqlalchemy.orm.query.Query): > > def __init__(self, *arg, **kw): > ... > > Alex > > 2009/9/18 Christian Démolis <christiandemo...@gmail.com>: > > Hello, > > > > Thx for the answer, thx to Alexandre to translate my mail. > > > > Sorry, i continue in english, i tried to do that at the end of my > > declaration file : > > > > Base.metadata.create_all(engine) > > import sqlalchemy.orm.query > > class MyQuery(sqlalchemy.orm.query.Query): > > def __init__(*arg, **kw): > > self._populate_existing = True > > super(MyQuery, self).__init__(*arg, **kw) > > Session = scoped_session(sessionmaker(autocommit=True, bind=engine)) > > session = Session() > > print "Le temps de déclaration SQL ALCHEMY", time.time()-xref > > > > Is it correct? i m not very good in subclassing :S > > It seems to not work. > > When i add a print in the __init__, i never see it during the execution > of > > my program so MyQuery is not used i think. > > Can u tell me where should i subclass Query? In the declaration.py? in > > module sqlalchemy? > > I tried to add myquery here > > Session = scoped_session(sessionmaker(autocommit=True, bind=engine, > > query_cls=MyQuery)) > > but it does error > > File > > "C:\Python25\lib\site-packages\sqlalchemy-0.5.6-py2.5.egg\sqlalchemy\orm\ > > session.py", line 899, in query > > return self._query_cls(entities, self, **kwargs) > > File "Z:\Declaration.py", line 1451, in __init__ > > self._populate_existing = True > > NameError: global name 'self' is not defined > > > > I can t touch to the sqlalchemy module because the interpreter and > libraries > > are installed on multiple computers which execute one unique code on a > > shared network path. > > So it's more easy to change my source code than sqlalchemy code... > > > > i just want to change session.query behavior without change the code of > > sqlalchemy itself, please help me. > > > > 2009/9/17 Michael Bayer <mike...@zzzcomputing.com> > >> > >> Alexandre Conrad wrote: > >> > > >> > Christian, > >> > > >> > 2009/9/17 Christian Démolis <christiandemo...@gmail.com>: > >> >> Bonjour, > >> >> > >> >> Tu es français je pense au vu de ton prénom. > >> >> Je continue donc en français. > >> > > >> > Nice guess. > >> > > >> > I understand it feels more comfortable writing in French rather than > >> > in English, but many people are reading this list (or is only Mike > >> > doing support? ;) ) and may be interested at the topic. And more eyes > >> > and brains may answer your question. So please keep conversations on > >> > this list to its native language - English. If you really want to > >> > switch to a non-English language with someone particular, please > >> > exchange off-list, but I believe you'll dramatically reduce your > >> > chances of solving your problem. > >> > > >> > So for the record, you were explaining that you have 25000 lines of > >> > code and you'd like to avoid to add refresh or > >> > session.query().populate_existing() all around the place. You have > >> > attempted to override the query method but couldn't make it. You have > >> > pointed out the PreFilteredQuery > >> > http://www.sqlalchemy.org/trac/wiki/UsageRecipes/PreFilteredQuery but > >> > was unsuccessful achieving what you wanted. > >> > > >> > Sorry, maybe someone else can help you there. I haven't played with > >> > Query overriding myself. > >> > >> a Query subclass which just says > >> > >> def __init__(*arg, **kw): > >> self._populate_existing = True > >> super(MyQuery, self).__init__(*arg, **kw) > >> > >> should do it.... > >> > >> > >> > >> > >> > >> > > >> > Alex > >> > > >> > > > >> > > >> > >> > >> > > > > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---