diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-04-02 22:33:50 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-04-02 22:33:50 +0000 |
commit | bf77ddaabb8a39f292a649e51f84e8a9af397de7 (patch) | |
tree | fa15dc086012f8bf3bc3f7510d70b989683f1a3c /lib/sqlalchemy/sql/expression.py | |
parent | 0359a6a13dbe02b680e14cd830206544206153b8 (diff) | |
download | sqlalchemy-bf77ddaabb8a39f292a649e51f84e8a9af397de7.tar.gz |
- Got PG server side cursors back into shape, added fixed
unit tests as part of the default test suite. Added
better uniqueness to the cursor ID [ticket:1001]
- update().values() and insert().values() take keyword
arguments.
Diffstat (limited to 'lib/sqlalchemy/sql/expression.py')
-rw-r--r-- | lib/sqlalchemy/sql/expression.py | 53 |
1 files changed, 30 insertions, 23 deletions
diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index d8a85d8bd..c487ee173 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -3496,7 +3496,35 @@ class _UpdateBase(ClauseElement): self._bind = bind bind = property(bind, _set_bind) -class Insert(_UpdateBase): +class _ValuesBase(_UpdateBase): + def values(self, *args, **kwargs): + """specify the VALUES clause for an INSERT statement, or the SET clause for an UPDATE. + + \**kwargs + key=<somevalue> arguments + + \*args + deprecated. A single dictionary can be sent as the first positional argument. + """ + + if args: + v = args[0] + else: + v = {} + if len(v) == 0 and len(kwargs) == 0: + return self + u = self._clone() + + if u.parameters is None: + u.parameters = u._process_colparams(v) + u.parameters.update(kwargs) + else: + u.parameters = self.parameters.copy() + u.parameters.update(u._process_colparams(v)) + u.parameters.update(kwargs) + return u + +class Insert(_ValuesBase): def __init__(self, table, values=None, inline=False, bind=None, prefixes=None, **kwargs): self._bind = bind self.table = table @@ -3520,17 +3548,6 @@ class Insert(_UpdateBase): def _copy_internals(self, clone=_clone): self.parameters = self.parameters.copy() - def values(self, v): - if len(v) == 0: - return self - u = self._clone() - if u.parameters is None: - u.parameters = u._process_colparams(v) - else: - u.parameters = self.parameters.copy() - u.parameters.update(u._process_colparams(v)) - return u - def prefix_with(self, clause): """Add a word or expression between INSERT and INTO. Generative. @@ -3542,7 +3559,7 @@ class Insert(_UpdateBase): gen._prefixes = self._prefixes + [clause] return gen -class Update(_UpdateBase): +class Update(_ValuesBase): def __init__(self, table, whereclause, values=None, inline=False, bind=None, **kwargs): self._bind = bind self.table = table @@ -3576,16 +3593,6 @@ class Update(_UpdateBase): s._whereclause = _literal_as_text(whereclause) return s - def values(self, v): - if len(v) == 0: - return self - u = self._clone() - if u.parameters is None: - u.parameters = u._process_colparams(v) - else: - u.parameters = self.parameters.copy() - u.parameters.update(u._process_colparams(v)) - return u class Delete(_UpdateBase): def __init__(self, table, whereclause, bind=None): |