MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_bulk_delete

Method test_bulk_delete

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

Source from the content-addressed store, hash-verified

1816 @testing.requires.delete_returning
1817 @testing.combinations(True, False, argnames="flush_user_first")
1818 def test_bulk_delete(self, user_address_fixture, flush_user_first):
1819 User, Address = user_address_fixture(
1820 addresses_args={"backref": "user"}
1821 )
1822 sess = fixture_session()
1823
1824 u1 = User(
1825 name="x",
1826 addresses=[
1827 Address(email_address="e1"),
1828 Address(email_address="e2"),
1829 Address(email_address="e3"),
1830 ],
1831 )
1832 sess.add(u1)
1833
1834 # ha ha! u1 is not persistent yet. autoflush won't happen
1835 # until sess.scalars() actually runs. statement has to be
1836 # created with a pending parameter, not actual parameter
1837 assert inspect(u1).pending
1838
1839 if flush_user_first:
1840 sess.flush()
1841
1842 with self.sql_execution_asserter() as asserter:
1843 addresses = sess.scalars(
1844 u1.addresses.delete()
1845 .where(Address.email_address == "e2")
1846 .returning(Address),
1847 ).all()
1848
1849 eq_(
1850 addresses,
1851 [
1852 Address(email_address="e2"),
1853 ],
1854 )
1855
1856 uid = u1.id
1857
1858 asserter.assert_(
1859 Conditional(
1860 not flush_user_first,
1861 [
1862 CompiledSQL(
1863 "INSERT INTO users (name) VALUES (:name)",
1864 [{"name": "x"}],
1865 ),
1866 Conditional(
1867 testing.requires.insert_executemany_returning.enabled,
1868 [
1869 CompiledSQL(
1870 "INSERT INTO addresses "
1871 "(user_id, email_address) "
1872 "VALUES (:user_id, :email_address) "
1873 "RETURNING addresses.id",
1874 [
1875 {"user_id": uid, "email_address": "e1"},

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