X-Git-Url: https://git.jsancho.org/?p=datasette-pytables.git;a=blobdiff_plain;f=datasette_pytables%2F__init__.py;h=b857ee179bb744a1e64dca0fa09834fb8ee35b53;hp=50628e7848ae704859bc41300b3f4c71f5531821;hb=3fd7cb84292466fee240a896079d9a0c8d6be2d8;hpb=fd6cd6a911d1d99e79c14b9796c6a2e918a1291a diff --git a/datasette_pytables/__init__.py b/datasette_pytables/__init__.py index 50628e7..b857ee1 100644 --- a/datasette_pytables/__init__.py +++ b/datasette_pytables/__init__.py @@ -97,11 +97,12 @@ class Connection: table_rows = [] fields = parsed_sql['select'].split(',') + query = '' + start = 0 + end = table.nrows + # Use 'where' statement or get all the rows if 'where' in parsed_sql: - query = '' - start = 0 - end = table.nrows try: conditions = [] for condition in parsed_sql['where'].get_sublists(): @@ -118,12 +119,17 @@ class Connection: # Probably it's a PyTables query query = str(parsed_sql['where'])[6:] # without where keyword - if query: - table_rows = table.where(query, params, start, end) - else: - table_rows = table.iterrows(start, end) + # Limit number of rows + if 'limit' in parsed_sql: + max_rows = int(parsed_sql['limit']) + if end - start > max_rows: + end = start + max_rows + + # Execute query + if query: + table_rows = table.where(query, params, start, end) else: - table_rows = table.iterrows() + table_rows = table.iterrows(start, end) # Prepare rows if len(fields) == 1 and fields[0] == 'count(*)':