Awesome Michael it has given a speedup actually outside of caching even,
which is great.
How do I do the equivelant of this though?
compiled = stmt.compile()
params = compiled.params
# here we return the key as a long string. our "key mangler"
# set up with the region will boil it down to an md5.
return " ".join(
[str(compiled)] +
[str(params[k]) for k in sorted(params)])
I have the baked query context in the cache, and getting a string statement
from that is easy. How do I get the parameters out, to use as unique
identifiers?
Thanks!
Amir
On Friday, July 12, 2013 4:53:37 PM UTC-7, Michael Bayer wrote:
>
>
> On Jul 12, 2013, at 7:03 PM, Amir Elaguizy <[email protected]<javascript:>>
> wrote:
>
> > I'd like a way to avoid the cost of repeatedly compiling the same query,
> especially in the context of relationship caching.
> >
> > Specifically now that I have object caching in place, I have created my
> own keys where it is possible. However there are still some cases where I
> cannot. In these cases I'm falling back to the query based key mechanism:
> >
> > stmt = query.with_labels().statement
> > compiled = stmt.compile()
> > params = compiled.params
> >
> > However this is incredibly slow and what I'm finding is that I'm paying
> the cost for compiling the same query with just the parameters themselves
> changing. I'd like to create an in memory query cache in which the compiled
> queries are stored and the parameters are switched out, or something like
> that.
>
> See the recipe at
> http://www.sqlalchemy.org/trac/wiki/UsageRecipes/BakedQuery which will
> get you most of the way there, and there are plans at some point to make
> this into a fully supported feature.
>
>
>
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.