zoom.records module¶
zoom.records
record store
-
class
zoom.records.RecordStore(db, record_class=<class 'dict'>, name=None, key='id')¶ Bases:
zoom.store.Storestores records
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> people.kind 'person' >>> joe = Person(name='Joe', age=20, birthdate=datetime.date(1992,5,5)) >>> repr(joe) == ( ... "<Person {'name': 'Joe', 'age': 20, " ... "'birthdate': datetime.date(1992, 5, 5)}>" ... ) True >>> people.put(joe) 1 >>> person = people.get(1) >>> repr(person) == ( ... "<Person {'name': 'Joe', 'age': 20, " ... "'birthdate': datetime.date(1992, 5, 5)}>" ... ) True
>>> sally = Person(name='Sally', kids=0, ... birthdate=datetime.date(1992,5,5)) >>> people.put(sally) 2
>>> sally = people.find(name='Sally') >>> repr(sally) == ( ... "[<Person {'name': 'Sally', " ... "'kids': 0, 'birthdate': datetime.date(1992, 5, 5)}>]" ... ) True
>>> sally = people.first(name='Sally') >>> repr(sally) == ( ... "<Person {'name': 'Sally', " ... "'kids': 0, 'birthdate': datetime.date(1992, 5, 5)}>" ... ) True
>>> sally.kids += 1 >>> people.put(sally) 2
>>> repr(people.first(name='Sally')) == ( ... "<Person {'name': 'Sally', " ... "'kids': 1, 'birthdate': datetime.date(1992, 5, 5)}>" ... ) True
>>> sally = people.first(name='Sally') >>> sally.kids += 1 >>> people.put(sally) 2
>>> repr(people.first(name='Sally')) == ( ... "<Person {'name': 'Sally', " ... "'kids': 2, 'birthdate': datetime.date(1992, 5, 5)}>" ... ) True >>> sally = people.first(name='Sally') >>> sally.kids += 1 >>> people.put(sally) 2
>>> repr(people.first(name='Sally')) == ( ... "<Person {'name': 'Sally', " ... "'kids': 3, 'birthdate': datetime.date(1992, 5, 5)}>" ... ) True
>>> class Account(Record): pass >>> class Accounts(RecordStore): pass >>> accounts = Accounts(db, Account, key='account_id') >>> accounts.kind 'account'
>>> account = Account(name='Joe', added=datetime.date(1992,5,5)) >>> repr(account) == ( ... "<Account {'name': 'Joe', 'added': datetime.date(1992, 5, 5)}>" ... ) True >>> id = accounts.put(account) >>> id 1 >>> accounts.put(Account(name='Sam', added=datetime.date(2001,1,1))) 2 >>> accounts.put(Account(name='Sal', added=datetime.date(2001,1,1))) 3
>>> account = accounts.get(1) >>> print(accounts) account account_id name added ---------- ---- ---------- 1 Joe 1992-05-05 2 Sam 2001-01-01 3 Sal 2001-01-01 3 account records
>>> print(accounts.first(name='Sam')) Account account_id ..........: 2 name ................: 'Sam' added ...............: datetime.date(2001, 1, 1)
>>> print(accounts.find(added=datetime.date(2001, 1, 1))) account account_id name added ---------- ---- ---------- 2 Sam 2001-01-01 3 Sal 2001-01-01 2 account records
>>> accounts.delete(2) [2] >>> print(accounts) account account_id name added ---------- ---- ---------- 1 Joe 1992-05-05 3 Sal 2001-01-01 2 account records
-
all()¶ Retrieves all entities
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> id = people.put(Person(name='Sally', age=25)) >>> id = people.put(Person(name='Sam', age=25)) >>> id = people.put(Person(name='Joe', age=25)) >>> repr(people.all()) == ( ... "[<Person {'name': 'Sally', 'age': 25}>, " ... "<Person {'name': 'Sam', 'age': 25}>, " ... "<Person {'name': 'Joe', 'age': 25}>]" ... ) True
-
delete(*args, **kwargs)¶ delete a record
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> id = people.put(Person(name='Sally', age=25)) >>> id = people.put(Person(name='Sam', age=25)) >>> id = people.put(Person(name='Joe', age=25)) >>> joe = people.get(id) >>> id 3 >>> bool(joe) True >>> joe <Person {'name': 'Joe', 'age': 25}> >>> people.delete(id) [3] >>> joe = people.get(id) >>> joe >>> bool(joe) False
>>> bool(people.find(name='Sally')) True >>> people.delete(name='Sallie') >>> bool(people.find(name='Sally')) True >>> people.delete() >>> people.delete(name='Sally') [1] >>> bool(people.find(name='Sally')) False
>>> db.close()
-
exists(keys=None)¶ tests for existence of a record
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> id = people.put(Person(name='Sally', age=25)) >>> id 1 >>> sally = people.get(id) >>> sally <Person {'name': 'Sally', 'age': 25}> >>> people.exists(1) True >>> people.exists(2) False >>> people.exists([1, 2]) [True, False] >>> id = people.put(Person(name='Sam', age=25)) >>> people.exists([1, 2]) [True, True]
-
filter(function)¶ finds records that satisfiy filter
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> id = people.put(Person(name='Sam Adam Jones', age=25)) >>> id = people.put(Person(name='Sally Mary Smith', age=55)) >>> id = people.put(Person(name='Bob Marvin Smith', age=25)) >>> list(people.filter(lambda a: 'Mary' in a.name)) [<Person {'name': 'Sally Mary Smith', 'age': 55}>] >>> repr(list(people.filter(lambda a: a.age < 40))) == ( ... "[<Person {'name': 'Sam Adam Jones', 'age': 25}>, " ... "<Person {'name': 'Bob Marvin Smith', 'age': 25}>]" ... ) True
-
find(**kwargs)¶ finds entities that meet search criteria
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> id = people.put(Person(name='Sam', age=25)) >>> id = people.put(Person(name='Sally', age=55)) >>> id = people.put(Person(name='Bob', age=25))
>>> print(people.find(age=25)) person _id name age --- ---- --- 1 Sam 25 3 Bob 25 2 person records
>>> people.find(name='Sam') [<Person {'name': 'Sam', 'age': 25}>] >>> len(people.find(name='Sam')) 1
-
first(**kwargs)¶ finds the first record that meet search criteria
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> id = people.put(Person(name='Sam', age=25)) >>> id = people.put(Person(name='Sally', age=55)) >>> id = people.put(Person(name='Bob', age=25)) >>> people.first(age=5) >>> people.first(age=25) <Person {'name': 'Sam', 'age': 25}>
-
get(keys)¶ retrives records
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> id = people.put(Person(**{'name': 'Sam', 'age':15})) >>> sam = people.get(id) >>> sam <Person {'name': 'Sam', 'age': 15}> >>> people.put(Person(name='Jim',age=21)) 2 >>> print(people) person _id name age --- ---- --- 1 Sam 15 2 Jim 21 2 person records
>>> people.put(Person(name='Alice',age=29)) 3 >>> print(people.get([1, 3])) person _id name age --- ----- --- 1 Sam 15 3 Alice 29 2 person records
-
get_attributes()¶ get complete set of attributes for the record type
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> sam = Person(**{'name': 'Sam', 'age':15}) >>> sorted(sam.keys()) ['age', 'name'] >>> id = people.put(sam) >>> people.get_attributes() ['name', 'age', 'kids', 'birthdate']
-
id_name¶
-
last(**kwargs)¶ finds the last record that meet search criteria
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> id = people.put(Person(name='Sam', age=25)) >>> id = people.put(Person(name='Sally', age=55)) >>> id = people.put(Person(name='Bob', age=25)) >>> people.last(age=5) >>> people.last(age=25) <Person {'name': 'Bob', 'age': 25}>
-
put(record)¶ stores a record
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> sally = Person(name='Sally', age=25) >>> sally <Person {'name': 'Sally', 'age': 25}> >>> id = people.put(Person(name='Sally', age=25)) >>> id 1 >>> sally <Person {'name': 'Sally', 'age': 25}> >>> sally = people.get(id) >>> sally <Person {'name': 'Sally', 'age': 25}> >>> sally.age = 35 >>> people.put(sally) 1 >>> person = people.get(id) >>> person <Person {'name': 'Sally', 'age': 35}> >>> id = people.put({'name':'James', 'age':15}) >>> id 2 >>> people.get(id) <Person {'name': 'James', 'age': 15}>
-
search(text)¶ search for records that match text
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> id = people.put(Person(name='Sam Adam Jones', age=25)) >>> id = people.put(Person(name='Sally Mary Smith', age=55)) >>> id = people.put(Person(name='Bob Marvin Smith', age=25))
>>> repr(list(people.search('smi'))) == ( ... "[<Person {'name': 'Sally Mary Smith', 'age': 55}>, " ... "<Person {'name': 'Bob Marvin Smith', 'age': 25}>]" ... ) True
>>> list(people.search('bo smi')) [<Person {'name': 'Bob Marvin Smith', 'age': 25}>]
>>> list(people.search('smi 55')) [<Person {'name': 'Sally Mary Smith', 'age': 55}>]
-
zap()¶ deletes all entities of the given kind
>>> db = setup_test() >>> class Person(Record): pass >>> class People(RecordStore): pass >>> people = People(db, Person) >>> id = people.put(Person(name='Sally', age=25)) >>> id = people.put(Person(name='Sam', age=25)) >>> id = people.put(Person(name='Joe', age=25)) >>> repr(people.all()) == ( ... "[<Person {'name': 'Sally', 'age': 25}>, " ... "<Person {'name': 'Sam', 'age': 25}>, " ... "<Person {'name': 'Joe', 'age': 25}>]" ... ) True
>>> people.zap() >>> people.all() []
-
-
class
zoom.records.Result(rows, storage)¶ Bases:
objectrows resulting from a method call
-
zoom.records.get_result_iterator(rows, storage)¶ returns an iterator that iterates over the rows and zips the names onto the items being iterated so they come back as dicts
-
zoom.records.table_of(klass, db=None)¶ Return a table of Records of the given class
The klass parameter can be a subclass of zoom.Model or a table name. If a zoom.Model is provided the actual table name is derived from the class name. If the table name is provivded then it’s taken as-is.
Uses the current site database if none is provided.
>>> site = zoom.sites.Site() >>> users = table_of('users', site.db) >>> user = users.first(username='admin') >>> user['first_name'] 'Admin'