diff options
| author | Idan Kamara <idankk86@gmail.com> | 2012-12-06 00:11:52 +0200 |
|---|---|---|
| committer | Idan Kamara <idankk86@gmail.com> | 2012-12-06 00:11:52 +0200 |
| commit | d57c1c2ddd654a1077ab04ba7277828d9030c23d (patch) | |
| tree | 6e4b93f19c175336329d64b78ab1acf806895a9b /lib/sqlalchemy/dialects | |
| parent | 51839352a4a9d4b87bdca6c148ec0fd847b8630b (diff) | |
| download | sqlalchemy-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.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/base.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/sqlite/base.py | 1 |
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 |
