parent
0a2f7c0799
commit
c69827de7c
@ -546,27 +546,23 @@ class Table(object):
|
|||||||
if not self.exists:
|
if not self.exists:
|
||||||
return iter([])
|
return iter([])
|
||||||
|
|
||||||
filters = []
|
|
||||||
for column, value in _filter.items():
|
|
||||||
if not self.has_column(column):
|
|
||||||
raise DatasetException("No such column: %s" % column)
|
|
||||||
filters.append(self.table.c[column] == value)
|
|
||||||
|
|
||||||
columns = []
|
columns = []
|
||||||
|
clauses = []
|
||||||
for column in args:
|
for column in args:
|
||||||
if isinstance(column, ClauseElement):
|
if isinstance(column, ClauseElement):
|
||||||
filters.append(column)
|
clauses.append(column)
|
||||||
else:
|
else:
|
||||||
if not self.has_column(column):
|
if not self.has_column(column):
|
||||||
raise DatasetException("No such column: %s" % column)
|
raise DatasetException("No such column: %s" % column)
|
||||||
columns.append(self.table.c[column])
|
columns.append(self.table.c[column])
|
||||||
|
|
||||||
|
clause = self._args_to_clause(_filter, clauses=clauses)
|
||||||
if not len(columns):
|
if not len(columns):
|
||||||
return iter([])
|
return iter([])
|
||||||
|
|
||||||
q = expression.select(columns,
|
q = expression.select(columns,
|
||||||
distinct=True,
|
distinct=True,
|
||||||
whereclause=and_(*filters),
|
whereclause=clause,
|
||||||
order_by=[c.asc() for c in columns])
|
order_by=[c.asc() for c in columns])
|
||||||
return self.db.query(q)
|
return self.db.query(q)
|
||||||
|
|
||||||
|
|||||||
@ -360,6 +360,12 @@ class TableTestCase(unittest.TestCase):
|
|||||||
self.tbl.table.columns.date >= datetime(2011, 1, 2, 0, 0)))
|
self.tbl.table.columns.date >= datetime(2011, 1, 2, 0, 0)))
|
||||||
assert len(x) == 4, x
|
assert len(x) == 4, x
|
||||||
|
|
||||||
|
x = list(self.tbl.distinct('temperature', place='B€rkeley'))
|
||||||
|
assert len(x) == 3, x
|
||||||
|
x = list(self.tbl.distinct('temperature',
|
||||||
|
place=['B€rkeley', 'G€lway']))
|
||||||
|
assert len(x) == 6, x
|
||||||
|
|
||||||
def test_insert_many(self):
|
def test_insert_many(self):
|
||||||
data = TEST_DATA * 100
|
data = TEST_DATA * 100
|
||||||
self.tbl.insert_many(data, chunk_size=13)
|
self.tbl.insert_many(data, chunk_size=13)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user