- description.append((col,))
- else:
- description.append((field,))
-
- # Return the rows
- return rows, truncated, tuple(description)
-
- def _execute_datasette_query(self, sql, params):
- "Datasette special queries for getting tables info"
- if sql == "SELECT count(*) from sqlite_master WHERE type = 'view' and name=:n":
- row = Row()
- row['count(*)'] = 0
- return [row]
- elif sql == 'select sql from sqlite_master where name = :n and type="table"':
- try:
- table = self.h5file.get_node(params['n'])
- colnames = ['value']
- if type(table) is tables.table.Table:
- colnames = table.colnames
- row = Row()
- row['sql'] = 'CREATE TABLE {} ({})'.format(params['n'], ", ".join(colnames))
- return [row]
- except:
- return []
- else:
- raise Exception("SQLite queries cannot be executed with this connector")
-
-class Row(list):
- def __init__(self, values=None):
- self.labels = []
- self.values = []
- if values:
- for idx in values:
- self.__setitem__(idx, values[idx])
-
- def __setitem__(self, idx, value):
- if type(idx) is str:
- if idx in self.labels:
- self.values[self.labels.index(idx)] = value