diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-10-21 16:54:42 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-10-21 16:54:42 -0400 |
commit | 39d17c76df542d0040c2c8db2d2e3dc897b5cce5 (patch) | |
tree | f5aeba8be0f61c0db8d5ba0e76efdaa593cd85c4 /examples/beaker_caching/model.py | |
parent | f2bc0ddcb496e6a0cb0a0ad88c7c055dbf0c11a7 (diff) | |
download | sqlalchemy-39d17c76df542d0040c2c8db2d2e3dc897b5cce5.tar.gz |
- converted beaker demo to dogpile.cache, [ticket:2589]
Diffstat (limited to 'examples/beaker_caching/model.py')
-rw-r--r-- | examples/beaker_caching/model.py | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/examples/beaker_caching/model.py b/examples/beaker_caching/model.py deleted file mode 100644 index a6733962d..000000000 --- a/examples/beaker_caching/model.py +++ /dev/null @@ -1,106 +0,0 @@ -"""Model. We are modeling Person objects with a collection -of Address objects. Each Address has a PostalCode, which -in turn references a City and then a Country: - -Person --(1..n)--> Address -Address --(has a)--> PostalCode -PostalCode --(has a)--> City -City --(has a)--> Country - -""" -from sqlalchemy import Column, Integer, String, ForeignKey -from sqlalchemy.orm import relationship -from caching_query import FromCache, RelationshipCache -from environment import Base, bootstrap - -class Country(Base): - __tablename__ = 'country' - - id = Column(Integer, primary_key=True) - name = Column(String(100), nullable=False) - - def __init__(self, name): - self.name = name - -class City(Base): - __tablename__ = 'city' - - id = Column(Integer, primary_key=True) - name = Column(String(100), nullable=False) - country_id = Column(Integer, ForeignKey('country.id'), nullable=False) - country = relationship(Country) - - def __init__(self, name, country): - self.name = name - self.country = country - -class PostalCode(Base): - __tablename__ = 'postal_code' - - id = Column(Integer, primary_key=True) - code = Column(String(10), nullable=False) - city_id = Column(Integer, ForeignKey('city.id'), nullable=False) - city = relationship(City) - - @property - def country(self): - return self.city.country - - def __init__(self, code, city): - self.code = code - self.city = city - -class Address(Base): - __tablename__ = 'address' - - id = Column(Integer, primary_key=True) - person_id = Column(Integer, ForeignKey('person.id'), nullable=False) - street = Column(String(200), nullable=False) - postal_code_id = Column(Integer, ForeignKey('postal_code.id')) - postal_code = relationship(PostalCode) - - @property - def city(self): - return self.postal_code.city - - @property - def country(self): - return self.postal_code.country - - def __str__(self): - return "%s\t"\ - "%s, %s\t"\ - "%s" % (self.street, self.city.name, - self.postal_code.code, self.country.name) - -class Person(Base): - __tablename__ = 'person' - - id = Column(Integer, primary_key=True) - name = Column(String(100), nullable=False) - addresses = relationship(Address, collection_class=set) - - def __init__(self, name, *addresses): - self.name = name - self.addresses = set(addresses) - - def __str__(self): - return self.name - - def __repr__(self): - return "Person(name=%r)" % self.name - - def format_full(self): - return "\t".join([str(x) for x in [self] + list(self.addresses)]) - -# Caching options. A set of three RelationshipCache options -# which can be applied to Query(), causing the "lazy load" -# of these attributes to be loaded from cache. -cache_address_bits = RelationshipCache("default", "byid", PostalCode.city).\ - and_( - RelationshipCache("default", "byid", City.country) - ).and_( - RelationshipCache("default", "byid", Address.postal_code) - ) - -bootstrap()
\ No newline at end of file |