summaryrefslogtreecommitdiff
path: root/examples/adjacencytree/basic_tree.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/adjacencytree/basic_tree.py')
-rw-r--r--examples/adjacencytree/basic_tree.py16
1 files changed, 6 insertions, 10 deletions
diff --git a/examples/adjacencytree/basic_tree.py b/examples/adjacencytree/basic_tree.py
index 9676fae89..53bdc8298 100644
--- a/examples/adjacencytree/basic_tree.py
+++ b/examples/adjacencytree/basic_tree.py
@@ -1,9 +1,12 @@
"""a basic Adjacency List model tree."""
from sqlalchemy import *
+from sqlalchemy.orm import *
from sqlalchemy.util import OrderedDict
+from sqlalchemy.orm.collections import attribute_mapped_collection
-metadata = MetaData('sqlite:///', echo=True)
+metadata = MetaData('sqlite:///')
+metadata.bind.echo = True
trees = Table('treenodes', metadata,
Column('node_id', Integer, Sequence('treenode_id_seq',optional=False), primary_key=True),
@@ -11,17 +14,10 @@ trees = Table('treenodes', metadata,
Column('node_name', String(50), nullable=False),
)
-class NodeList(OrderedDict):
- """subclasses OrderedDict to allow usage as a list-based property."""
- def append(self, node):
- self[node.name] = node
- def __iter__(self):
- return iter(self.values())
class TreeNode(object):
"""a rich Tree class which includes path-based operations"""
def __init__(self, name):
- self.children = NodeList()
self.name = name
self.parent = None
self.id = None
@@ -30,7 +26,7 @@ class TreeNode(object):
if isinstance(node, str):
node = TreeNode(node)
node.parent = self
- self.children.append(node)
+ self.children[node.name] = node
def __repr__(self):
return self._getstring(0, False)
def __str__(self):
@@ -47,7 +43,7 @@ mapper(TreeNode, trees, properties=dict(
id=trees.c.node_id,
name=trees.c.node_name,
parent_id=trees.c.parent_node_id,
- children=relation(TreeNode, cascade="all", backref=backref("parent", remote_side=[trees.c.node_id]), collection_class=NodeList),
+ children=relation(TreeNode, cascade="all", backref=backref("parent", remote_side=[trees.c.node_id]), collection_class=attribute_mapped_collection('name')),
))
print "\n\n\n----------------------------"