setting the newDataBase flag to False, heres the echo at the end:

2007-03-08 14:30:26,428 INFO sqlalchemy.engine.base.Engine.0x..50 BEGIN
2007-03-08 14:30:26,435 INFO sqlalchemy.engine.base.Engine.0x..50  
DELETE FROM treenodes WHERE treenodes.node_id = ?
2007-03-08 14:30:26,441 INFO sqlalchemy.engine.base.Engine.0x..50  
[[5], [6]]
2007-03-08 14:30:26,447 INFO sqlalchemy.engine.base.Engine.0x..50  
DELETE FROM treenodes WHERE treenodes.node_id = ?
2007-03-08 14:30:26,448 INFO sqlalchemy.engine.base.Engine.0x..50  
[[2], [3], [4]]
2007-03-08 14:30:26,456 INFO sqlalchemy.engine.base.Engine.0x..50  
DELETE FROM treenodes WHERE treenodes.node_id = ?
2007-03-08 14:30:26,458 INFO sqlalchemy.engine.base.Engine.0x..50 [1]
2007-03-08 14:30:26,466 INFO sqlalchemy.engine.base.Engine.0x..50  
DELETE FROM treedata WHERE treedata.data_id = ?
2007-03-08 14:30:26,467 INFO sqlalchemy.engine.base.Engine.0x..50  
[[1], [2]]
2007-03-08 14:30:26,471 INFO sqlalchemy.engine.base.Engine.0x..50 COMMIT


run sqlite3 against the file, check the tables:

z-eeks-Computer:~/dev/sqlalchemy classic$ sqlite3 tutorial_modified.db
SQLite version 3.3.13
Enter ".help" for instructions
sqlite> select * from treenodes;
sqlite> select * from treedata;
sqlite>

so, its all deleted.  filesize is irrelevant.

On Mar 8, 2007, at 11:56 AM, Andrea Gavana wrote:

> import os
> from sqlalchemy import *
> from sqlalchemy.util import OrderedDict
>
>
> class TreeData(object):
>     def __init__(self, value=None):
>         self.id = None
>         self.value = value
>     def __repr__(self):
>         return "TreeData(%s, %s)" % (repr(self.id), repr(self.value))
>
> 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
>         self.parent_id = None
>         self.value = None
>
>     def setdata(self, data):
>         self.data = data
>
>     def getdata(self):
>         return self.data
>
>     def append(self, node):
>         if isinstance(node, str):
>             node = TreeNode(node)
>         node.parent = self
>         self.children.append(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)
>
>
> class TheEngine(object):
>
>     def __init__(self, newDataBase=True):
>
>         if newDataBase and os.path.isfile("tutorial_modified.db"):
>             os.remove("tutorial_modified.db")
>
>         self.engine = create_engine('sqlite:/// 
> tutorial_modified.db', echo=False)
>         metadata = BoundMetaData(self.engine)
>
>         trees = Table('treenodes', metadata,
>             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),
>             Column('data_ident', Integer, ForeignKey 
> ('treedata.data_id'))
>             )
>
>
>         treedata = Table("treedata", metadata,
>                          Column('data_id', Integer, primary_key=True),
>                          Column('value', String(100), nullable=False)
>                          )
>
>         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),
>                                                 data=relation(mapper 
> (TreeData, treedata, properties=dict(id=treedata.c.data_id)),  
> cascade="delete,delete-orphan,save-update", lazy=False))
>                )
>
>         metadata.create_all()
>         self.session = create_session()
>
>         if newDataBase:
>             self.CreateNodes()
>         else:
>             self.LoadNodes()
>
>
>     def CreateNodes(self):
>
>         node2 = TreeNode('node2')
>         node2.setdata(TreeData("Hello "*10000))
>
>         node2.append('subnode1')
>
>         node = TreeNode('rootnode')
>         node.setdata(TreeData("World "*10000))
>
>         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()
>
>         self.session.save(node)
>         self.session.flush()
>
>         print "\n\n\n----------------------------"
>         print "DATABASE SIZE: ", os.stat("tutorial_modified.db")[6]/ 
> 1000.0, "Kb"
>         print "----------------------------"
>
>
>     def LoadNodes(self):
>
>         self.session.clear()
>         t = self.session.query(TreeNode).select 
> (TreeNode.c.name=="rootnode")[0]
>
>         print "\n\n\n----------------------------"
>         print "Check the previous tree structure:"
>         print "----------------------------"
>         print t.print_nodes()
>
>         print "\n\n----------------------------"
>         print "Deleting all the nodes from DB"
>         print "----------------------------"
>
>         self.session.delete(t)
>         del t
>         self.session.flush()
>
>         print "\n\n----------------------------"
>         print "DATABASE SIZE: ", os.stat("tutorial_modified.db")[6]/ 
> 1000.0, "Kb"
>         print "----------------------------"
>
>
> # AG: Just modify this variable, the first time to create a new
> # database use True, then use False to see what happens by
> # loading the existing database
> newDataBase = True
>
> def main():
>     engineclass = TheEngine(newDataBase)
>
> if __name__ == "__main__":
>     main()


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to