diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-04-17 10:55:08 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-06-27 21:30:37 -0400 |
| commit | 08c46eea924d23a234bf3feea1a928eb8ae8a00a (patch) | |
| tree | 3795e1d04fa0e35c1e93080320b43c8fe0ed792e /test/orm/inheritance/test_basic.py | |
| parent | 2d9387354f11da322c516412eb5dfe937163c90b (diff) | |
| download | sqlalchemy-08c46eea924d23a234bf3feea1a928eb8ae8a00a.tar.gz | |
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
Diffstat (limited to 'test/orm/inheritance/test_basic.py')
| -rw-r--r-- | test/orm/inheritance/test_basic.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/test/orm/inheritance/test_basic.py b/test/orm/inheritance/test_basic.py index e38758ee2..b4a17bf3a 100644 --- a/test/orm/inheritance/test_basic.py +++ b/test/orm/inheritance/test_basic.py @@ -40,6 +40,7 @@ from sqlalchemy.testing import is_ from sqlalchemy.testing import mock from sqlalchemy.testing.assertsql import AllOf from sqlalchemy.testing.assertsql import CompiledSQL +from sqlalchemy.testing.assertsql import Conditional from sqlalchemy.testing.assertsql import Or from sqlalchemy.testing.assertsql import RegexSQL from sqlalchemy.testing.schema import Column @@ -1829,10 +1830,20 @@ class JoinedNoFKSortingTest(fixtures.MappedTest): self.assert_sql_execution( testing.db, sess.flush, - CompiledSQL("INSERT INTO a () VALUES ()", {}), - CompiledSQL("INSERT INTO a () VALUES ()", {}), - CompiledSQL("INSERT INTO a () VALUES ()", {}), - CompiledSQL("INSERT INTO a () VALUES ()", {}), + Conditional( + testing.db.dialect.insert_executemany_returning, + [ + CompiledSQL( + "INSERT INTO a (id) VALUES (DEFAULT)", [{}, {}, {}, {}] + ), + ], + [ + CompiledSQL("INSERT INTO a () VALUES ()", {}), + CompiledSQL("INSERT INTO a () VALUES ()", {}), + CompiledSQL("INSERT INTO a () VALUES ()", {}), + CompiledSQL("INSERT INTO a () VALUES ()", {}), + ], + ), AllOf( CompiledSQL( "INSERT INTO b (id) VALUES (:id)", [{"id": 1}, {"id": 3}] |
