summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects
diff options
context:
space:
mode:
authorIdan Kamara <idankk86@gmail.com>2012-12-06 00:11:52 +0200
committerIdan Kamara <idankk86@gmail.com>2012-12-06 00:11:52 +0200
commitd57c1c2ddd654a1077ab04ba7277828d9030c23d (patch)
tree6e4b93f19c175336329d64b78ab1acf806895a9b /lib/sqlalchemy/dialects
parent51839352a4a9d4b87bdca6c148ec0fd847b8630b (diff)
downloadsqlalchemy-d57c1c2ddd654a1077ab04ba7277828d9030c23d.tar.gz
compiler: add support for multirow inserts
Some databases support this syntax for inserts: INSERT INTO table (id, name) VALUES ('v1', 'v2'), ('v3', 'v4'); which greatly increases INSERT speed. It is now possible to pass a list of lists/tuples/dictionaries as the values param to the Insert construct. We convert it to a flat dictionary so we can continue using bind params. The above query will be converted to: INSERT INTO table (id, name) VALUES (:id, :name), (:id0, :name0); Currently only supported on postgresql, mysql and sqlite.
Diffstat (limited to 'lib/sqlalchemy/dialects')
-rw-r--r--lib/sqlalchemy/dialects/mysql/base.py1
-rw-r--r--lib/sqlalchemy/dialects/postgresql/base.py1
-rw-r--r--lib/sqlalchemy/dialects/sqlite/base.py1
3 files changed, 3 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py
index 2cda1a147..5f515c936 100644
--- a/lib/sqlalchemy/dialects/mysql/base.py
+++ b/lib/sqlalchemy/dialects/mysql/base.py
@@ -1882,6 +1882,7 @@ class MySQLDialect(default.DefaultDialect):
supports_sane_rowcount = True
supports_sane_multi_rowcount = False
+ supports_multirow_insert = True
default_paramstyle = 'format'
colspecs = colspecs
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py
index ed24bc1fe..22667b317 100644
--- a/lib/sqlalchemy/dialects/postgresql/base.py
+++ b/lib/sqlalchemy/dialects/postgresql/base.py
@@ -1182,6 +1182,7 @@ class PGDialect(default.DefaultDialect):
supports_default_values = True
supports_empty_insert = False
+ supports_multirow_insert = True
default_paramstyle = 'pyformat'
ischema_names = ischema_names
colspecs = colspecs
diff --git a/lib/sqlalchemy/dialects/sqlite/base.py b/lib/sqlalchemy/dialects/sqlite/base.py
index 6d2d0e89d..d1532b9bb 100644
--- a/lib/sqlalchemy/dialects/sqlite/base.py
+++ b/lib/sqlalchemy/dialects/sqlite/base.py
@@ -601,6 +601,7 @@ class SQLiteDialect(default.DefaultDialect):
supports_default_values = True
supports_empty_insert = False
supports_cast = True
+ supports_multirow_insert = True
default_paramstyle = 'qmark'
execution_ctx_cls = SQLiteExecutionContext