summaryrefslogtreecommitdiff
path: root/examples/adjacencytree/byroot_tree.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-01-03 00:30:37 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-01-03 00:30:37 +0000
commit8d7c9349b2ad717969de3e8463f75c68d7af4ff1 (patch)
tree4667a4d2d79519cd6e6f56f1b527fbe6992386e1 /examples/adjacencytree/byroot_tree.py
parente0e7a37d0525254a49269656a54fe76da9254503 (diff)
downloadsqlalchemy-8d7c9349b2ad717969de3e8463f75c68d7af4ff1.tar.gz
moved tables into examples so basic_tree could be simplified
Diffstat (limited to 'examples/adjacencytree/byroot_tree.py')
-rw-r--r--examples/adjacencytree/byroot_tree.py51
1 files changed, 42 insertions, 9 deletions
diff --git a/examples/adjacencytree/byroot_tree.py b/examples/adjacencytree/byroot_tree.py
index 80768bd5c..a66f11378 100644
--- a/examples/adjacencytree/byroot_tree.py
+++ b/examples/adjacencytree/byroot_tree.py
@@ -1,11 +1,35 @@
from sqlalchemy import *
import sqlalchemy.util as util
-import tables
import string, sys, time
"""a more advanced example of basic_tree.py. illustrates MapperExtension objects which
add application-specific functionality to a Mapper object."""
+engine = create_engine('sqlite://', echo = True)
+#engine = sqlalchemy.engine.create_engine('mysql', {'db':'test', 'host':'127.0.0.1', 'user':'scott'}, echo=True)
+#engine = sqlalchemy.engine.create_engine('postgres', {'database':'test', 'host':'127.0.0.1', 'user':'scott', 'password':'tiger'}, echo=True)
+#engine = sqlalchemy.engine.create_engine('oracle', {'dsn':os.environ['DSN'], 'user':os.environ['USER'], 'password':os.environ['PASSWORD']}, echo=True)
+
+"""create the treenodes table. This is ia basic adjacency list model table.
+One additional column, "root_node_id", references a "root node" row and is used
+in the 'byroot_tree' example."""
+
+trees = Table('treenodes', engine,
+ Column('node_id', Integer, Sequence('treenode_id_seq',optional=False), primary_key=True),
+ Column('parent_node_id', Integer, ForeignKey('treenodes.node_id'), nullable=True),
+ Column('root_node_id', Integer, ForeignKey('treenodes.node_id'), nullable=True),
+ Column('node_name', String(50), nullable=False),
+ Column('data_ident', Integer, ForeignKey('treedata.data_id'))
+ )
+
+treedata = Table(
+ "treedata", engine,
+ Column('data_id', Integer, primary_key=True),
+ Column('value', String(100), nullable=False)
+)
+
+
+
class NodeList(util.OrderedDict):
"""extends an Ordered Dictionary, which is just a dictionary that iterates its keys and values
in the order they were inserted. Adds an "append" method, which appends a node to the
@@ -98,14 +122,23 @@ class TreeData(object):
def __repr__(self):
return "TreeData(%s, %s)" % (repr(self.id), repr(self.value))
-assign_mapper(TreeNode, tables.trees, properties=dict(
- id=tables.trees.c.node_id,
- name=tables.trees.c.node_name,
- parent_id=tables.trees.c.parent_node_id,
- root_id=tables.trees.c.root_node_id,
- root=relation(TreeNode, primaryjoin=tables.trees.c.root_node_id==tables.trees.c.node_id, foreignkey=tables.trees.c.node_id, lazy=None, uselist=False),
- children=relation(TreeNode, primaryjoin=tables.trees.c.parent_node_id==tables.trees.c.node_id, lazy=None, uselist=True, private=True),
- data=relation(TreeData, tables.treedata, properties=dict(id=tables.treedata.c.data_id), private=True, lazy=False)
+
+print "\n\n\n----------------------------"
+print "Creating Tree Table:"
+print "----------------------------"
+
+treedata.create()
+trees.create()
+
+
+assign_mapper(TreeNode, trees, properties=dict(
+ id=trees.c.node_id,
+ name=trees.c.node_name,
+ parent_id=trees.c.parent_node_id,
+ root_id=trees.c.root_node_id,
+ root=relation(TreeNode, primaryjoin=trees.c.root_node_id==trees.c.node_id, foreignkey=trees.c.node_id, lazy=None, uselist=False),
+ children=relation(TreeNode, primaryjoin=trees.c.parent_node_id==trees.c.node_id, lazy=None, uselist=True, private=True),
+ data=relation(TreeData, treedata, properties=dict(id=treedata.c.data_id), private=True, lazy=False)
), extension = TreeLoader())
TreeNode.mapper