diff options
author | Jason Kirtland <jek@discorporate.us> | 2008-03-07 16:56:37 +0000 |
---|---|---|
committer | Jason Kirtland <jek@discorporate.us> | 2008-03-07 16:56:37 +0000 |
commit | aa033afeeedd4d41493819312d652041017abf72 (patch) | |
tree | 2950637d74d991a2892d6cf58bc005691494f209 /lib/sqlalchemy/sql/expression.py | |
parent | 90a7553b5be6abada946edb2cfbe6b4ee5e3b18c (diff) | |
download | sqlalchemy-aa033afeeedd4d41493819312d652041017abf72.tar.gz |
Added support for vendor-extended INSERT syntax like INSERT DELAYED INTO
Diffstat (limited to 'lib/sqlalchemy/sql/expression.py')
-rw-r--r-- | lib/sqlalchemy/sql/expression.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index 8e2a13e7c..316cbd7c1 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -274,6 +274,10 @@ def insert(table, values=None, inline=False, **kwargs): column specifications will be generated from the full list of table columns. + prefixes + A list of modifier keywords to be inserted between INSERT and INTO, + see ``Insert.prefix_with``. + inline if True, SQL defaults will be compiled 'inline' into the statement and not pre-executed. @@ -3475,11 +3479,16 @@ class _UpdateBase(ClauseElement): bind = property(bind, _set_bind) class Insert(_UpdateBase): - def __init__(self, table, values=None, inline=False, bind=None, **kwargs): + def __init__(self, table, values=None, inline=False, bind=None, prefixes=None, **kwargs): self._bind = bind self.table = table self.select = None self.inline=inline + if prefixes: + self._prefixes = [_literal_as_text(p) for p in prefixes] + else: + self._prefixes = [] + self.parameters = self._process_colparams(values) self.kwargs = kwargs @@ -3504,6 +3513,17 @@ class Insert(_UpdateBase): u.parameters.update(u._process_colparams(v)) return u + def prefix_with(self, clause): + """Add a word or expression between INSERT and INTO. Generative. + + If multiple prefixes are supplied, they will be separated with + spaces. + """ + gen = self._clone() + clause = _literal_as_text(clause) + gen._prefixes = self._prefixes + [clause] + return gen + class Update(_UpdateBase): def __init__(self, table, whereclause, values=None, inline=False, bind=None, **kwargs): self._bind = bind |