def select(self, start=0, count=1, fields=None): """ Select rows start: start row index count: number of rows to return fields: list of fields to select (default: all) """ try: if fields is None: self.update() except Unavailable: if fields is None: raise Unavailable() records = [] for i in range(start, start + count): record = {} if fields is None: for field in self.__fields: record[field] = self.dbms.get_record_field_value(field, self.table, i, self.db) else: for field in fields: record[field] = self.dbms.get_record_field_value(field, self.table, i, self.db) records.append(record) return records
def databases(self): """ Enumerates all existing/accessible databases """ if self.has_cap(DBS_ENUM): n = self.get_nb_databases() for i in range(n): yield DatabaseWrapper(self, self.get_database_name(i)) else: raise Unavailable()
def fields(self, table, db=None): """ Enumerates all fields from a given table. If a database is specified, use it. """ if self.has_cap(FIELDS_ENUM): if db is None: if self.current_db is None: self.database() db = self.current_db n = self.get_nb_fields(table, db) for i in range(n): yield FieldWrapper(self, table, db, self.get_field_name(table, i, db)) else: raise Unavailable()
def tables(self, db=None): """ Enumerates all tables fro a given database. If not specified, use the current database. """ if self.has_cap(TABLES_ENUM): # if db not given, then find the db if db is None: if self.current_db is None: self.database() db = self.current_db n = self.get_nb_tables(db) for i in range(n): yield TableWrapper(self, self.get_table_name(i, db), db) else: raise Unavailable()