summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/expression.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2008-03-07 16:56:37 +0000
committerJason Kirtland <jek@discorporate.us>2008-03-07 16:56:37 +0000
commitaa033afeeedd4d41493819312d652041017abf72 (patch)
tree2950637d74d991a2892d6cf58bc005691494f209 /lib/sqlalchemy/sql/expression.py
parent90a7553b5be6abada946edb2cfbe6b4ee5e3b18c (diff)
downloadsqlalchemy-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.py22
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