summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/ext/declarative.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-03-10 17:15:51 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-03-10 17:15:51 +0000
commit79004f1ede9f74b6b6f04424ee36d2f442f839c1 (patch)
tree1a64d53c0a8f0d9b1fa32de322b856c93538208b /lib/sqlalchemy/ext/declarative.py
parent88a8cc0c9e78c1ad83649f7f49bd05fc9dc25dd4 (diff)
downloadsqlalchemy-79004f1ede9f74b6b6f04424ee36d2f442f839c1.tar.gz
removed the "__main__" code from below
Diffstat (limited to 'lib/sqlalchemy/ext/declarative.py')
-rw-r--r--lib/sqlalchemy/ext/declarative.py82
1 files changed, 0 insertions, 82 deletions
diff --git a/lib/sqlalchemy/ext/declarative.py b/lib/sqlalchemy/ext/declarative.py
index ac315e755..77bffad7a 100644
--- a/lib/sqlalchemy/ext/declarative.py
+++ b/lib/sqlalchemy/ext/declarative.py
@@ -237,85 +237,3 @@ def declarative_base(engine=None, metadata=None):
setattr(self, k, kwargs[k])
return Base
-if __name__ == '__main__':
- # sample usage:
-
- from sqlalchemy import *
- from sqlalchemy.orm import *
-
- # Base is created per-app (or per desired scope)
- # and houses a MetaData, and optionally an engine
- Base = declarative_base(create_engine('sqlite://', echo=False))
-
- class User(Base):
- __tablename__ = 'users'
-
- id = Column('id', Integer, primary_key=True)
- name = Column('name', String(50))
- addresses = relation("Address", backref="user")
- type = Column('type', String(50))
-
- __mapper_args__ = dict(polymorphic_on=type, polymorphic_identity='user')
-
- class AdminUser(User):
- __tablename__ = 'admin_users'
- __mapper_args__ = dict(polymorphic_identity='adminuser')
-
- id = Column('id', Integer, ForeignKey('users.id'), primary_key=True)
- supername = Column('supername', String(50))
-
- class Address(Base):
- __tablename__ = 'addresses'
-
- id = Column('id', Integer, primary_key=True)
- user_id = Column('user_id', Integer, ForeignKey('users.id'))
- _email = Column('email', String(50))
-
- # illustrate a synonym
- def _set_email(self, email):
- self._email = email
- def _get_email(self):
- return self._email
- email = declared_synonym(property(_get_email, _set_email), '_email')
-
- class Keyword(Base):
- __tablename__ = 'keywords'
-
- id = Column('id', Integer, primary_key=True)
- name = Column('name', String(50))
-
- # m2m tables are just created as Table objects
- user_keywords = Table('user_keywords', Base.metadata,
- Column('user_id', Integer, ForeignKey('users.id')),
- Column('keyword_id', Integer, ForeignKey('keywords.id'))
- )
-
- # test adding relations after the fact
- User.keywords = relation(Keyword, secondary=user_keywords, backref='users')
-
- Base.metadata.create_all()
-
- sess = create_session()
-
- u1 = User(name='ed',
- addresses = [Address(email='eds email')],
- keywords = [Keyword(name='one'), Keyword(name='two')]
- )
-
- sess.save(u1)
-
- a1 = AdminUser(name='some admin', supername='root', addresses=[
- Address(email='admin email')
- ], keywords=[])
- sess.save(a1)
-
- sess.flush()
-
- sess.clear()
-
- print sess.query(User).filter(User.name=='ed').all()
- print sess.query(User).filter(User.addresses.any(Address.email.like('%ed%'))).all()
-
- for user in sess.query(User).with_polymorphic('*').all():
- print user, user.addresses, user.keywords
- \ No newline at end of file