Implement additional find operators (and relevant tests)

This commit is contained in:
Abdurrahmaan Iqbal 2019-08-08 12:55:29 +01:00
parent 43e9431865
commit d8cf515ffe
2 changed files with 8 additions and 0 deletions

View File

@ -375,6 +375,8 @@ class Table(object):
key = list(value.keys())[0]
if key in ('like',):
clauses.append(self.table.c[column].like(value[key]))
elif key in ('ilike',):
clauses.append(self.table.c[column].ilike(value[key]))
elif key in ('>', 'gt'):
clauses.append(self.table.c[column] > value[key])
elif key in ('<', 'lt'):
@ -383,6 +385,8 @@ class Table(object):
clauses.append(self.table.c[column] >= value[key])
elif key in ('<=', 'lte'):
clauses.append(self.table.c[column] <= value[key])
elif key in ('=', '==', 'is'):
clauses.append(self.table.c[column] == value[key])
elif key in ('!=', '<>', 'not'):
clauses.append(self.table.c[column] != value[key])
elif key in ('between', '..'):

View File

@ -339,6 +339,10 @@ class TableTestCase(unittest.TestCase):
assert len(ds) == 5, ds
ds = list(self.tbl.find(temperature={'between': [5, 8]}))
assert len(ds) == 3, ds
ds = list(self.tbl.find(place={'=': 'G€lway'}))
assert len(ds) == 3, ds
ds = list(self.tbl.find(place={'ilike': '%LwAy'}))
assert len(ds) == 3, ds
def test_offset(self):
ds = list(self.tbl.find(place=TEST_CITY_1, _offset=1))