Похоже, ваш атрибут query._current_rows
представляет собой DataFrame от pandas, поэтому при попытке запустить query.current_rows
значение ValueError всегда будет вызываться независимо от того, пусто ResultSet
или нет.
Из документов Cassandra Driver для ResultSet
мы видим, что функция current_rows
ищет наличие атрибута _current_rows
:
@property
def current_rows(self):
"""
The list of current page rows. May be empty if the result was empty,
or this is the last page.
"""
return self._current_rows or []
Если self._current_rows
выше - это DataFrame от pandas, он всегда будет возвращать ValueError. Например:
>>> data = {'col1': [1, 2], 'col2': [3, 4]}
>>> df = pd.DataFrame(data)
>>> df
col1 col2
0 1 3
1 2 4
>>> df or []
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/src/.pyenv/versions/3.6.5/lib/python3.6/site-packages/pandas/core/generic.py", line 1573, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
>>> df = pd.DataFrame()
>>> df or []
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/src/.pyenv/versions/3.6.5/lib/python3.6/site-packages/pandas/core/generic.py", line 1573, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Поэтому, чтобы проверить, содержит ли DataFrame pandas в ResultSet
данные, вы можете сделать что-то вроде этого:
if not query._current_rows.empty:
print 'y'
else:
print 'n'
(Примечание: я не знаю, как выглядит ваш session.row_factory
, но я предполагаю, что он создает DataFrame для панд из строк, возвращаемых Кассандрой, аналогично этому ответу)