MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / test_bulk_update

Method test_bulk_update

test/orm/test_dynamic.py:1774–1863  ·  view source on GitHub ↗
(self, user_address_fixture, flush_user_first)

Source from the content-addressed store, hash-verified

1772 @testing.requires.update_returning
1773 @testing.combinations(True, False, argnames="flush_user_first")
1774 def test_bulk_update(self, user_address_fixture, flush_user_first):
1775 User, Address = user_address_fixture(
1776 addresses_args={"backref": "user"}
1777 )
1778 sess = fixture_session()
1779
1780 u1 = User(
1781 name="x",
1782 addresses=[
1783 Address(email_address="e1"),
1784 Address(email_address="e2"),
1785 Address(email_address="e3"),
1786 ],
1787 )
1788 sess.add(u1)
1789
1790 # ha ha! u1 is not persistent yet. autoflush won't happen
1791 # until sess.scalars() actually runs. statement has to be
1792 # created with a pending parameter, not actual parameter
1793 assert inspect(u1).pending
1794
1795 if flush_user_first:
1796 sess.flush()
1797
1798 with self.sql_execution_asserter() as asserter:
1799 addresses = sess.scalars(
1800 u1.addresses.update()
1801 .values(email_address=Address.email_address + "@foo.com")
1802 .returning(Address),
1803 ).all()
1804
1805 eq_(
1806 addresses,
1807 [
1808 Address(user=User(name="x"), email_address="e1@foo.com"),
1809 Address(user=User(name="x"), email_address="e2@foo.com"),
1810 Address(user=User(name="x"), email_address="e3@foo.com"),
1811 ],
1812 )
1813
1814 uid = u1.id
1815
1816 asserter.assert_(
1817 Conditional(
1818 not flush_user_first,
1819 [
1820 CompiledSQL(
1821 "INSERT INTO users (name) VALUES (:name)",
1822 [{"name": "x"}],
1823 ),
1824 Conditional(
1825 testing.requires.insert_executemany_returning.enabled,
1826 [
1827 CompiledSQL(
1828 "INSERT INTO addresses "
1829 "(user_id, email_address) "
1830 "VALUES (:user_id, :email_address) "
1831 "RETURNING addresses.id",

Callers

nothing calls this directly

Calls 15

fixture_sessionFunction · 0.90
inspectFunction · 0.90
eq_Function · 0.90
ConditionalClass · 0.90
CompiledSQLClass · 0.90
UserClass · 0.70
AddressClass · 0.70
addMethod · 0.45
flushMethod · 0.45
allMethod · 0.45
scalarsMethod · 0.45

Tested by

no test coverage detected