Example #1
0
 def test_Delete(self):
     tabname = 'test_Delete'
     self.tdb.CreateTable(tabname, ['x', 'y', 'z'])
     self.tdb.Insert(tabname, {'x': 'X1', 'y': 'Y1'})
     self.tdb.Insert(tabname, {'x': 'X2', 'y': 'Y2', 'z': 'Z2'})
     self.tdb.Delete(tabname, conditions={'x': dbtables.PrefixCond('X')})
     values = self.tdb.Select(tabname, ['y'],
                              conditions={'x': dbtables.PrefixCond('X')})
     self.assertEqual(len(values), 0)
Example #2
0
    def test_CondObjs(self):
        tabname = "test_CondObjs"

        self.tdb.CreateTable(tabname, ['a', 'b', 'c', 'd', 'e', 'p'])

        self.tdb.Insert(tabname, {
            'a': "the letter A",
            'b': "the letter B",
            'c': "is for cookie"
        })
        self.tdb.Insert(
            tabname, {
                'a': "is for aardvark",
                'e': "the letter E",
                'c': "is for cookie",
                'd': "is for dog"
            })
        self.tdb.Insert(
            tabname, {
                'a': "the letter A",
                'e': "the letter E",
                'c': "is for cookie",
                'p': "is for Python"
            })

        values = self.tdb.Select(
            tabname, ['p', 'e'],
            conditions={'e': dbtables.PrefixCond('the l')})
        self.assertEqual(len(values), 2, values)
        self.assertEqual(values[0]['e'], values[1]['e'], values)
        self.assertNotEqual(values[0]['p'], values[1]['p'], values)

        values = self.tdb.Select(
            tabname, ['d', 'a'],
            conditions={'a': dbtables.LikeCond('%aardvark%')})
        self.assertEqual(len(values), 1, values)
        self.assertEqual(values[0]['d'], "is for dog", values)
        self.assertEqual(values[0]['a'], "is for aardvark", values)

        values = self.tdb.Select(
            tabname, None, {
                'b': dbtables.Cond(),
                'e': dbtables.LikeCond('%letter%'),
                'a': dbtables.PrefixCond('is'),
                'd': dbtables.ExactCond('is for dog'),
                'c': dbtables.PrefixCond('is for'),
                'p': lambda s: not s
            })
        self.assertEqual(len(values), 1, values)
        self.assertEqual(values[0]['d'], "is for dog", values)
        self.assertEqual(values[0]['a'], "is for aardvark", values)
Example #3
0
    def test_Delete(self):
        tabname = "test_Delete"
        self.tdb.CreateTable(tabname, ['x', 'y', 'z'])

        # prior to 2001-05-09 there was a bug where Delete() would
        # fail if it encountered any rows that did not have values in
        # every column.
        # Hunted and Squashed by <Donwulff> (Jukka Santala - [email protected])
        self.tdb.Insert(tabname, {'x': 'X1', 'y': 'Y1'})
        self.tdb.Insert(tabname, {'x': 'X2', 'y': 'Y2', 'z': 'Z2'})

        self.tdb.Delete(tabname, conditions={'x': dbtables.PrefixCond('X')})
        values = self.tdb.Select(tabname, ['y'],
                                 conditions={'x': dbtables.PrefixCond('X')})
        self.assertEqual(len(values), 0)
Example #4
0
    def test04_MultiCondSelect(self):
        tabname = "test04_MultiCondSelect"
        try:
            self.tdb.Drop(tabname)
        except dbtables.TableDBError:
            pass
        self.tdb.CreateTable(tabname, ['a', 'b', 'c', 'd', 'e'])

        try:
            self.tdb.Insert(tabname, {
                'a': "",
                'e': pickle.dumps([{
                    4: 5,
                    6: 7
                }, 'foo'], 1),
                'f': "Zero"
            })
            self.fail('Expected an exception')
        except dbtables.TableDBError:
            pass

        self.tdb.Insert(tabname, {
            'a': "A",
            'b': "B",
            'c': "C",
            'd': "D",
            'e': "E"
        })
        self.tdb.Insert(tabname, {
            'a': "-A",
            'b': "-B",
            'c': "-C",
            'd': "-D",
            'e': "-E"
        })
        self.tdb.Insert(tabname, {
            'a': "A-",
            'b': "B-",
            'c': "C-",
            'd': "D-",
            'e': "E-"
        })

        if verbose:
            self.tdb._db_print()

        # This select should return 0 rows.  it is designed to test
        # the bug identified and fixed in sourceforge bug # 590449
        # (Big Thanks to "Rob Tillotson (n9mtb)" for tracking this down
        # and supplying a fix!!  This one caused many headaches to say
        # the least...)
        values = self.tdb.Select(tabname, ['b', 'a', 'd'],
                                 conditions={
                                     'e': dbtables.ExactCond('E'),
                                     'a': dbtables.ExactCond('A'),
                                     'd': dbtables.PrefixCond('-')
                                 })
        self.assertEqual(len(values), 0, values)
Example #5
0
    def test04_MultiCondSelect(self):
        tabname = 'test04_MultiCondSelect'
        try:
            self.tdb.Drop(tabname)
        except dbtables.TableDBError:
            pass

        self.tdb.CreateTable(tabname, ['a', 'b', 'c', 'd', 'e'])
        try:
            self.tdb.Insert(tabname, {
                'a': '',
                'e': pickle.dumps([{
                    4: 5,
                    6: 7
                }, 'foo'], 1),
                'f': 'Zero'
            })
            self.fail('Expected an exception')
        except dbtables.TableDBError:
            pass

        self.tdb.Insert(tabname, {
            'a': 'A',
            'b': 'B',
            'c': 'C',
            'd': 'D',
            'e': 'E'
        })
        self.tdb.Insert(tabname, {
            'a': '-A',
            'b': '-B',
            'c': '-C',
            'd': '-D',
            'e': '-E'
        })
        self.tdb.Insert(tabname, {
            'a': 'A-',
            'b': 'B-',
            'c': 'C-',
            'd': 'D-',
            'e': 'E-'
        })
        if verbose:
            self.tdb._db_print()
        values = self.tdb.Select(tabname, ['b', 'a', 'd'],
                                 conditions={
                                     'e': dbtables.ExactCond('E'),
                                     'a': dbtables.ExactCond('A'),
                                     'd': dbtables.PrefixCond('-')
                                 })
        self.assertEqual(len(values), 0, values)
Example #6
0
    def test03(self):
        tabname = 'test03'
        try:
            self.tdb.Drop(tabname)
        except dbtables.TableDBError:
            pass

        if verbose:
            print '...before CreateTable...'
            self.tdb._db_print()
        self.tdb.CreateTable(tabname, ['a', 'b', 'c', 'd', 'e'])
        if verbose:
            print '...after CreateTable...'
            self.tdb._db_print()
        self.tdb.Drop(tabname)
        if verbose:
            print '...after Drop...'
            self.tdb._db_print()
        self.tdb.CreateTable(tabname, ['a', 'b', 'c', 'd', 'e'])
        try:
            self.tdb.Insert(tabname, {
                'a': '',
                'e': pickle.dumps([{
                    4: 5,
                    6: 7
                }, 'foo'], 1),
                'f': 'Zero'
            })
            self.fail('Expected an exception')
        except dbtables.TableDBError:
            pass

        try:
            self.tdb.Select(tabname, [], conditions={'foo': '123'})
            self.fail('Expected an exception')
        except dbtables.TableDBError:
            pass

        self.tdb.Insert(tabname, {
            'a': '42',
            'b': 'bad',
            'c': 'meep',
            'e': 'Fuzzy wuzzy was a bear'
        })
        self.tdb.Insert(
            tabname, {
                'a': '581750',
                'b': 'good',
                'd': 'bla',
                'c': 'black',
                'e': 'fuzzy was here'
            })
        self.tdb.Insert(
            tabname, {
                'a': '800000',
                'b': 'good',
                'd': 'bla',
                'c': 'black',
                'e': 'Fuzzy wuzzy is a bear'
            })
        if verbose:
            self.tdb._db_print()
        values = self.tdb.Select(tabname, ['b', 'a', 'd'],
                                 conditions={
                                     'e': re.compile('wuzzy').search,
                                     'a': re.compile('^[0-9]+$').match
                                 })
        self.assertEqual(len(values), 2)
        self.tdb.Delete(tabname, conditions={'b': dbtables.ExactCond('good')})
        values = self.tdb.Select(
            tabname, ['a', 'd', 'b'],
            conditions={'e': dbtables.PrefixCond('Fuzzy')})
        self.assertEqual(len(values), 1)
        self.assertEqual(values[0]['d'], None)
        values = self.tdb.Select(tabname, ['b'],
                                 conditions={'c': lambda c: c == 'meep'})
        self.assertEqual(len(values), 1)
        self.assertEqual(values[0]['b'], 'bad')
        return