summaryrefslogtreecommitdiff
path: root/examples/large_collection/large_collection.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/large_collection/large_collection.py')
-rw-r--r--examples/large_collection/large_collection.py112
1 files changed, 68 insertions, 44 deletions
diff --git a/examples/large_collection/large_collection.py b/examples/large_collection/large_collection.py
index 82d2e554b..eb014c6cb 100644
--- a/examples/large_collection/large_collection.py
+++ b/examples/large_collection/large_collection.py
@@ -1,54 +1,76 @@
-
-from sqlalchemy import (MetaData, Table, Column, Integer, String, ForeignKey,
- create_engine)
-from sqlalchemy.orm import (mapper, relationship, sessionmaker)
+from sqlalchemy import (
+ MetaData,
+ Table,
+ Column,
+ Integer,
+ String,
+ ForeignKey,
+ create_engine,
+)
+from sqlalchemy.orm import mapper, relationship, sessionmaker
meta = MetaData()
-org_table = Table('organizations', meta,
- Column('org_id', Integer, primary_key=True),
- Column('org_name', String(50), nullable=False, key='name'),
- mysql_engine='InnoDB')
-
-member_table = Table('members', meta,
- Column('member_id', Integer, primary_key=True),
- Column('member_name', String(50), nullable=False, key='name'),
- Column('org_id', Integer,
- ForeignKey('organizations.org_id', ondelete="CASCADE")),
- mysql_engine='InnoDB')
+org_table = Table(
+ "organizations",
+ meta,
+ Column("org_id", Integer, primary_key=True),
+ Column("org_name", String(50), nullable=False, key="name"),
+ mysql_engine="InnoDB",
+)
+
+member_table = Table(
+ "members",
+ meta,
+ Column("member_id", Integer, primary_key=True),
+ Column("member_name", String(50), nullable=False, key="name"),
+ Column(
+ "org_id",
+ Integer,
+ ForeignKey("organizations.org_id", ondelete="CASCADE"),
+ ),
+ mysql_engine="InnoDB",
+)
class Organization(object):
def __init__(self, name):
self.name = name
+
class Member(object):
def __init__(self, name):
self.name = name
-mapper(Organization, org_table, properties = {
- 'members' : relationship(Member,
- # Organization.members will be a Query object - no loading
- # of the entire collection occurs unless requested
- lazy="dynamic",
-
- # Member objects "belong" to their parent, are deleted when
- # removed from the collection
- cascade="all, delete-orphan",
-
- # "delete, delete-orphan" cascade does not load in objects on delete,
- # allows ON DELETE CASCADE to handle it.
- # this only works with a database that supports ON DELETE CASCADE -
- # *not* sqlite or MySQL with MyISAM
- passive_deletes=True,
- )
-})
+
+mapper(
+ Organization,
+ org_table,
+ properties={
+ "members": relationship(
+ Member,
+ # Organization.members will be a Query object - no loading
+ # of the entire collection occurs unless requested
+ lazy="dynamic",
+ # Member objects "belong" to their parent, are deleted when
+ # removed from the collection
+ cascade="all, delete-orphan",
+ # "delete, delete-orphan" cascade does not load in objects on delete,
+ # allows ON DELETE CASCADE to handle it.
+ # this only works with a database that supports ON DELETE CASCADE -
+ # *not* sqlite or MySQL with MyISAM
+ passive_deletes=True,
+ )
+ },
+)
mapper(Member, member_table)
-if __name__ == '__main__':
- engine = create_engine("postgresql://scott:tiger@localhost/test", echo=True)
+if __name__ == "__main__":
+ engine = create_engine(
+ "postgresql://scott:tiger@localhost/test", echo=True
+ )
meta.create_all(engine)
# expire_on_commit=False means the session contents
@@ -56,10 +78,10 @@ if __name__ == '__main__':
sess = sessionmaker(engine, expire_on_commit=False)()
# create org with some members
- org = Organization('org one')
- org.members.append(Member('member one'))
- org.members.append(Member('member two'))
- org.members.append(Member('member three'))
+ org = Organization("org one")
+ org.members.append(Member("member one"))
+ org.members.append(Member("member two"))
+ org.members.append(Member("member three"))
sess.add(org)
@@ -69,14 +91,14 @@ if __name__ == '__main__':
# the 'members' collection is a Query. it issues
# SQL as needed to load subsets of the collection.
print("-------------------------\nload subset of members\n")
- members = org.members.filter(member_table.c.name.like('%member t%')).all()
+ members = org.members.filter(member_table.c.name.like("%member t%")).all()
print(members)
# new Members can be appended without any
# SQL being emitted to load the full collection
- org.members.append(Member('member four'))
- org.members.append(Member('member five'))
- org.members.append(Member('member six'))
+ org.members.append(Member("member four"))
+ org.members.append(Member("member five"))
+ org.members.append(Member("member six"))
print("-------------------------\nflush two - save 3 more members\n")
sess.commit()
@@ -85,7 +107,9 @@ if __name__ == '__main__':
# SQL is only emitted for the head row - the Member rows
# disappear automatically without the need for additional SQL.
sess.delete(org)
- print("-------------------------\nflush three - delete org, delete members in one statement\n")
+ print(
+ "-------------------------\nflush three - delete org, delete members in one statement\n"
+ )
sess.commit()
print("-------------------------\nno Member rows should remain:\n")
@@ -93,4 +117,4 @@ if __name__ == '__main__':
sess.close()
print("------------------------\ndone. dropping tables.")
- meta.drop_all(engine) \ No newline at end of file
+ meta.drop_all(engine)