Source code for sqlobject.tests.test_delete
from sqlobject import OR, RelatedJoin, SQLObject, StringCol, cache
from sqlobject.tests.dbtest import setupClass
from .test_basic import SOTestSO1, setupGetters
########################################
# Delete during select
########################################
[docs]def testSelect():
setupGetters(SOTestSO1)
for obj in SOTestSO1.select('all'):
obj.destroySelf()
assert list(SOTestSO1.select('all')) == []
########################################
# Delete many rows at once
########################################
[docs]def testDeleteMany():
setupGetters(SOTestSO1)
SOTestSO1.deleteMany(OR(SOTestSO1.q.name == "bob",
SOTestSO1.q.name == "fred"))
assert len(list(SOTestSO1.select('all'))) == 2
[docs]def testDeleteBy():
setupGetters(SOTestSO1)
SOTestSO1.deleteBy(name="dave")
assert len(list(SOTestSO1.select())) == 3
########################################
# Delete without caching
########################################
[docs]class NoCache(SQLObject):
name = StringCol()
[docs]def testDestroySelf():
setupClass(NoCache)
old = NoCache._connection.cache
NoCache._connection.cache = cache.CacheSet(cache=False)
value = NoCache(name='test')
value.destroySelf()
NoCache._connection.cache = old
########################################
# Delete from related joins
########################################
[docs]class Service(SQLObject):
groups = RelatedJoin("ServiceGroup")
[docs]class ServiceGroup(SQLObject):
services = RelatedJoin("Service")