Here is a crude outline (need to properly escape table name, etc.), of
what I think might work, and it seems to render properly, but crashes
with:

  File "/home/rarch/tg2env/lib/python2.6/site-packages/
SQLAlchemy-0.6.4.2kbdev-py2.6-linux-x86_64.egg/sqlalchemy/engine/
default.py", line 353, in __init__
    raise exc.ArgumentError("Not an executable clause: %s" % compiled)
ArgumentError: Not an executable clause:
...

class MyQuery(Query):
    _for_update_of = None

    @_generative()
    def for_update_of(self, arg):
        """Keep track that we want to for update of this"""
        self._for_update_of = class_mapper(arg).mapped_table.name

    def _compile_context(self, labels=True):
        context = super(MyQuery, self)._compile_context(labels)
        if self._for_update_of:
            context.statement = ForUpdateOf(context.statement,
self._for_update_of)
        return context

class ForUpdateOf(ClauseElement):
    def __init__(self, statement, for_update_of):
        self.statement = statement
        self.for_update_of = for_update_of

@compiles(ForUpdateOf)
def compile_forupdateof(element, compiler, **kw):
    return "%s FOR UPDATE OF %s" %
(compiler.process(element.statement), element.for_update_of)

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to