From 8d7c9349b2ad717969de3e8463f75c68d7af4ff1 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 3 Jan 2006 00:30:37 +0000 Subject: [PATCH] moved tables into examples so basic_tree could be simplified --- examples/adjacencytree/basic_tree.py | 33 +++++++++++++---- examples/adjacencytree/byroot_tree.py | 51 ++++++++++++++++++++++----- examples/adjacencytree/tables.py | 35 ------------------ 3 files changed, 68 insertions(+), 51 deletions(-) delete mode 100644 examples/adjacencytree/tables.py diff --git a/examples/adjacencytree/basic_tree.py b/examples/adjacencytree/basic_tree.py index 0f1ff9b234..2439a3884c 100644 --- a/examples/adjacencytree/basic_tree.py +++ b/examples/adjacencytree/basic_tree.py @@ -1,10 +1,24 @@ from sqlalchemy import * import sqlalchemy.util as util -import tables import string, sys """a basic Adjacency List model tree.""" +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.""" + +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('node_name', String(50), nullable=False), + ) + + class NodeList(util.OrderedDict): """extends an Ordered Dictionary, which is just a dictionary that returns its keys and values in order upon iteration. Adds functionality to automatically associate @@ -46,14 +60,19 @@ class TreeNode(object): # define the mapper. we will make "convenient" property # names vs. the more verbose names in the table definition -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, - children=relation(TreeNode, primaryjoin=tables.trees.c.parent_node_id==tables.trees.c.node_id, lazy=True, uselist=True, private=True), +assign_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, private=True), )) +print "\n\n\n----------------------------" +print "Creating Tree Table:" +print "----------------------------" + +trees.create() + node2 = TreeNode('node2') node2.append('subnode1') node = TreeNode('rootnode') diff --git a/examples/adjacencytree/byroot_tree.py b/examples/adjacencytree/byroot_tree.py index 80768bd5c6..a66f11378e 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 diff --git a/examples/adjacencytree/tables.py b/examples/adjacencytree/tables.py deleted file mode 100644 index ed70946e6e..0000000000 --- a/examples/adjacencytree/tables.py +++ /dev/null @@ -1,35 +0,0 @@ -from sqlalchemy import * -import os - -engine = create_engine('sqlite', {'filename':':memory:'}, 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) -) - -print "\n\n\n----------------------------" -print "Creating Tree Table:" -print "----------------------------" - -treedata.create() -trees.create() - - -- 2.47.2