parsed = parse(sql)
except:
# Propably it's a PyTables expression
- for token in ['group by', 'order by', 'limit']:
+ for token in ['group by', 'order by', 'limit', '']:
res = re.search('(?i)where (.*)' + token, sql)
if res:
modified_sql = re.sub('(?i)where (.*)(' + token + ')', '\g<2>', sql)
parsed = parse(modified_sql)
- parsed['where'] = res.group(1)
+ parsed['where'] = res.group(1).strip()
break
# Always a list of fields
self.path = path
self.h5file = tables.open_file(path)
- def execute(self, sql, params=None, truncate=False):
+ def execute(self, sql, params=None, truncate=False, page_size=None):
if params is None:
params = {}
rows = []
if end - start > max_rows:
end = start + max_rows
+ # Truncate if needed
+ if page_size and truncate:
+ if end - start > page_size:
+ end = start + page_size
+ truncated = True
+
# Execute query
if query:
table_rows = table.where(query, params, start, end)