summaryrefslogtreecommitdiff
path: root/test/orm/test_bulk.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-12-07 20:36:01 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2014-12-07 20:36:01 -0500
commit07cc9e054ae4d5bb9cfc3c1d807b2a0d58a95b69 (patch)
tree67d674975985cd2ebce1f54b928759024fe2e56e /test/orm/test_bulk.py
parentc42b8f8eb8f4c324e2469bf3baaa316c214abce5 (diff)
downloadsqlalchemy-07cc9e054ae4d5bb9cfc3c1d807b2a0d58a95b69.tar.gz
- add an option for bulk_save -> update to not do history
Diffstat (limited to 'test/orm/test_bulk.py')
-rw-r--r--test/orm/test_bulk.py31
1 files changed, 30 insertions, 1 deletions
diff --git a/test/orm/test_bulk.py b/test/orm/test_bulk.py
index f6d2513d1..e27d3b73c 100644
--- a/test/orm/test_bulk.py
+++ b/test/orm/test_bulk.py
@@ -13,7 +13,7 @@ class BulkTest(testing.AssertsExecutionResults):
run_define_tables = 'each'
-class BulkInsertTest(BulkTest, _fixtures.FixtureTest):
+class BulkInsertUpdateTest(BulkTest, _fixtures.FixtureTest):
@classmethod
def setup_mappers(cls):
@@ -75,6 +75,35 @@ class BulkInsertTest(BulkTest, _fixtures.FixtureTest):
)
assert 'id' not in objects[0].__dict__
+ def test_bulk_save_updated_include_unchanged(self):
+ User, = self.classes("User",)
+
+ s = Session(expire_on_commit=False)
+ objects = [
+ User(name="u1"),
+ User(name="u2"),
+ User(name="u3")
+ ]
+ s.add_all(objects)
+ s.commit()
+
+ objects[0].name = 'u1new'
+ objects[2].name = 'u3new'
+
+ s = Session()
+ with self.sql_execution_asserter() as asserter:
+ s.bulk_save_objects(objects, update_changed_only=False)
+
+ asserter.assert_(
+ CompiledSQL(
+ "UPDATE users SET id=:id, name=:name WHERE "
+ "users.id = :users_id",
+ [{'users_id': 1, 'id': 1, 'name': 'u1new'},
+ {'users_id': 2, 'id': 2, 'name': 'u2'},
+ {'users_id': 3, 'id': 3, 'name': 'u3new'}]
+ )
+ )
+
class BulkInheritanceTest(BulkTest, fixtures.MappedTest):
@classmethod