diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-01-03 00:30:37 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-01-03 00:30:37 +0000 |
commit | 8d7c9349b2ad717969de3e8463f75c68d7af4ff1 (patch) | |
tree | 4667a4d2d79519cd6e6f56f1b527fbe6992386e1 /examples/adjacencytree/byroot_tree.py | |
parent | e0e7a37d0525254a49269656a54fe76da9254503 (diff) | |
download | sqlalchemy-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.py | 51 |
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 |