summaryrefslogtreecommitdiff
path: root/examples/adjacencytree/basic_tree.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-01-18 21:29:55 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2010-01-18 21:29:55 +0000
commit7f91210e945fe24d95f88c47a726bf4959925f96 (patch)
treedbc91481b14af61c1805ca7996ae6d5f39acc984 /examples/adjacencytree/basic_tree.py
parent8a9e2a6c3783433c6b1c7c6a3d6ffd2cc7c1fd16 (diff)
downloadsqlalchemy-7f91210e945fe24d95f88c47a726bf4959925f96.tar.gz
modernized "adjacencytree" example
Diffstat (limited to 'examples/adjacencytree/basic_tree.py')
-rw-r--r--examples/adjacencytree/basic_tree.py129
1 files changed, 0 insertions, 129 deletions
diff --git a/examples/adjacencytree/basic_tree.py b/examples/adjacencytree/basic_tree.py
deleted file mode 100644
index dec03e550..000000000
--- a/examples/adjacencytree/basic_tree.py
+++ /dev/null
@@ -1,129 +0,0 @@
-"""A basic Adjacency List model tree."""
-
-from sqlalchemy import MetaData, Table, Column, Sequence, ForeignKey
-from sqlalchemy import Integer, String
-from sqlalchemy.orm import create_session, mapper, relation, backref
-from sqlalchemy.orm.collections import attribute_mapped_collection
-
-metadata = MetaData('sqlite:///')
-metadata.bind.echo = True
-
-trees = Table('treenodes', metadata,
- Column('id', Integer, Sequence('treenode_id_seq', optional=True),
- primary_key=True),
- Column('parent_id', Integer, ForeignKey('treenodes.id'), nullable=True),
- Column('name', String(50), nullable=False))
-
-
-class TreeNode(object):
- """a rich Tree class which includes path-based operations"""
- def __init__(self, name):
- self.name = name
- self.parent = None
- self.id = None
- self.parent_id = None
- def append(self, node):
- if isinstance(node, str):
- node = TreeNode(node)
- node.parent = self
- self.children[node.name] = node
- def __repr__(self):
- return self._getstring(0, False)
- def __str__(self):
- return self._getstring(0, False)
- def _getstring(self, level, expand = False):
- s = (' ' * level) + "%s (%s,%s, %d)" % (
- self.name, self.id,self.parent_id,id(self)) + '\n'
- if expand:
- s += ''.join([n._getstring(level+1, True)
- for n in self.children.values()])
- return s
- def print_nodes(self):
- return self._getstring(0, True)
-
-mapper(TreeNode, trees, properties={
- 'children': relation(TreeNode, cascade="all",
- backref=backref("parent", remote_side=[trees.c.id]),
- collection_class=attribute_mapped_collection('name'),
- lazy=False, join_depth=3)})
-
-print "\n\n\n----------------------------"
-print "Creating Tree Table:"
-print "----------------------------"
-
-trees.create()
-
-node2 = TreeNode('node2')
-node2.append('subnode1')
-node = TreeNode('rootnode')
-node.append('node1')
-node.append(node2)
-node.append('node3')
-node.children['node2'].append('subnode2')
-
-print "\n\n\n----------------------------"
-print "Created new tree structure:"
-print "----------------------------"
-
-print node.print_nodes()
-
-print "\n\n\n----------------------------"
-print "Flushing:"
-print "----------------------------"
-
-session = create_session()
-session.add(node)
-session.flush()
-
-print "\n\n\n----------------------------"
-print "Tree After Save:"
-print "----------------------------"
-
-print node.print_nodes()
-
-node.append('node4')
-node.children['node4'].append('subnode3')
-node.children['node4'].append('subnode4')
-node.children['node4'].children['subnode3'].append('subsubnode1')
-del node.children['node1']
-
-print "\n\n\n----------------------------"
-print "Modified the tree"
-print "(added node4, node4/subnode3, node4/subnode4,"
-print "node4/subnode3/subsubnode1, deleted node1):"
-print "----------------------------"
-
-print node.print_nodes()
-
-print "\n\n\n----------------------------"
-print "Flushing:"
-print "----------------------------"
-session.flush()
-
-print "\n\n\n----------------------------"
-print "Tree After Save:"
-print "----------------------------"
-
-print node.print_nodes()
-
-nodeid = node.id
-
-print "\n\n\n----------------------------"
-print "Clearing session, selecting "
-print "tree new where node_id=%d:" % nodeid
-print "----------------------------"
-
-session.expunge_all()
-t = session.query(TreeNode).filter(TreeNode.id==nodeid)[0]
-
-print "\n\n\n----------------------------"
-print "Full Tree:"
-print "----------------------------"
-print t.print_nodes()
-
-print "\n\n\n----------------------------"
-print "Marking root node as deleted"
-print "and flushing:"
-print "----------------------------"
-session.delete(t)
-session.flush()