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/databases | |
| 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/databases')
| -rw-r--r-- | lib/sqlalchemy/databases/mysql.py | 6 | ||||
| -rw-r--r-- | lib/sqlalchemy/databases/oracle.py | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/lib/sqlalchemy/databases/mysql.py b/lib/sqlalchemy/databases/mysql.py index c6d78cf90..4eab9e55c 100644 --- a/lib/sqlalchemy/databases/mysql.py +++ b/lib/sqlalchemy/databases/mysql.py @@ -411,6 +411,12 @@ class MySQLCompiler(ansisql.ANSICompiler): # TODO: put whatever MySQL does for CAST here. self.strings[cast] = self.strings[cast.clause] + def for_update_clause(self, select): + if select.for_update == 'read': + return ' LOCK IN SHARE MODE' + else: + return super(MySQLCompiler, self).for_update_clause(select) + def limit_clause(self, select): text = "" if select.limit is not None: diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 5f574338b..5db157cbb 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -402,6 +402,12 @@ class OracleCompiler(ansisql.ANSICompiler): def limit_clause(self, select): return "" + def for_update_clause(self, select): + if select.for_update=="nowait": + return " FOR UPDATE NOWAIT" + else: + return super(OracleCompiler, self).for_update_clause(select) + class OracleSchemaGenerator(ansisql.ANSISchemaGenerator): def get_column_specification(self, column, **kwargs): colspec = self.preparer.format_column(column) |
