diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-09-10 23:52:04 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-09-10 23:52:04 +0000 |
commit | 47d8b03b14145997fc0936bd674363f0e213f019 (patch) | |
tree | 64e9356d7c5f435b68d7deaa8b41c6a4cdc5c521 /lib/sqlalchemy/ansisql.py | |
parent | 287bf217958fbccb07cffafcc4481a2b6c7f2784 (diff) | |
download | sqlalchemy-47d8b03b14145997fc0936bd674363f0e213f019.tar.gz |
- changed "for_update" parameter to accept False/True/"nowait"
and "read", the latter two of which are interpreted only by
Oracle and Mysql [ticket:292]
- added "lockmode" argument to base Query select/get functions,
including "with_lockmode" function to get a Query copy that has
a default locking mode. Will translate "read"/"update"
arguments into a for_update argument on the select side.
[ticket:292]
Diffstat (limited to 'lib/sqlalchemy/ansisql.py')
-rw-r--r-- | lib/sqlalchemy/ansisql.py | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/sqlalchemy/ansisql.py b/lib/sqlalchemy/ansisql.py index c44595f36..66b917c20 100644 --- a/lib/sqlalchemy/ansisql.py +++ b/lib/sqlalchemy/ansisql.py @@ -394,13 +394,9 @@ class ANSICompiler(sql.Compiled): text += " ORDER BY " + order_by text += self.visit_select_postclauses(select) - - if select.for_update: - text += " FOR UPDATE" - if select.nowait: - text += " NOWAIT" - + text += self.for_update_clause(select) + if getattr(select, 'parens', False): self.strings[select] = "(" + text + ")" else: @@ -415,6 +411,12 @@ class ANSICompiler(sql.Compiled): """ called when building a SELECT statement, position is after all other SELECT clauses. Most DB syntaxes put LIMIT/OFFSET here """ return (select.limit or select.offset) and self.limit_clause(select) or "" + def for_update_clause(self, select): + if select.for_update: + return " FOR UPDATE" + else: + return "" + def limit_clause(self, select): text = "" if select.limit is not None: |