From 08c46eea924d23a234bf3feea1a928eb8ae8a00a Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 17 Apr 2020 10:55:08 -0400 Subject: ORM executemany returning Build on #5401 to allow the ORM to take advanage of executemany INSERT + RETURNING. Implemented the feature updated tests to support INSERT DEFAULT VALUES, needed to come up with a new syntax for compiler INSERT INTO table (anycol) VALUES (DEFAULT) which can then be iterated out for executemany. Added graceful degrade to plain executemany for PostgreSQL <= 8.2 Renamed EXECUTEMANY_DEFAULT to EXECUTEMANY_PLAIN Fix issue where unicode identifiers or parameter names wouldn't work with execute_values() under Py2K, because we have to encode the statement and therefore have to encode the insert_single_values_expr too. Correct issue from #5401 to support executemany + return_defaults for a PK that is explicitly pre-generated, meaning we aren't actually getting RETURNING but need to return it from compiled_parameters. Fixes: #5263 Change-Id: Id68e5c158c4f9ebc33b61c06a448907921c2a657 --- lib/sqlalchemy/testing/assertions.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib/sqlalchemy/testing/assertions.py') diff --git a/lib/sqlalchemy/testing/assertions.py b/lib/sqlalchemy/testing/assertions.py index 1ea366dac..998dde66b 100644 --- a/lib/sqlalchemy/testing/assertions.py +++ b/lib/sqlalchemy/testing/assertions.py @@ -343,6 +343,7 @@ class AssertsCompiledSQL(object): result, params=None, checkparams=None, + for_executemany=False, check_literal_execute=None, check_post_param=None, dialect=None, @@ -391,6 +392,9 @@ class AssertsCompiledSQL(object): if render_postcompile: compile_kwargs["render_postcompile"] = True + if for_executemany: + kw["for_executemany"] = True + if render_schema_translate: kw["render_schema_translate"] = True -- cgit v1.2.1