summaryrefslogtreecommitdiff
path: root/examples/graphs/graph1.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-01-19 00:53:12 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2010-01-19 00:53:12 +0000
commit40f8aadd582776524d3b98da1f577c2fc95619e7 (patch)
tree753eec3802734f397953976824a252bb60829189 /examples/graphs/graph1.py
parent56fe538cc7d81ce264fc6504feb1ead5e17d0f55 (diff)
downloadsqlalchemy-40f8aadd582776524d3b98da1f577c2fc95619e7.tar.gz
- mega example cleanup
- added READMEs to all examples in each __init__.py and added to sphinx documentation - added versioning example - removed vertical/vertical.py, the dictlikes are more straightforward
Diffstat (limited to 'examples/graphs/graph1.py')
-rw-r--r--examples/graphs/graph1.py86
1 files changed, 0 insertions, 86 deletions
diff --git a/examples/graphs/graph1.py b/examples/graphs/graph1.py
deleted file mode 100644
index 6122e65f1..000000000
--- a/examples/graphs/graph1.py
+++ /dev/null
@@ -1,86 +0,0 @@
-"""a directed graph example."""
-
-from sqlalchemy import MetaData, Table, Column, Integer, ForeignKey
-from sqlalchemy.orm import mapper, relation, create_session
-
-import logging
-logging.basicConfig()
-logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
-
-meta = MetaData('sqlite://')
-
-nodes = Table('nodes', meta,
- Column("nodeid", Integer, primary_key=True)
-)
-
-# here we have lower.nodeid <= higher.nodeid
-edges = Table('edges', meta,
- Column("lower_id", Integer, ForeignKey('nodes.nodeid'), primary_key=True),
- Column("higher_id", Integer, ForeignKey('nodes.nodeid'), primary_key=True)
-)
-
-meta.create_all()
-
-class Node(object):
- def __init__(self, id):
- self.nodeid = id
- def add_neighbor(self, othernode):
- Edge(self, othernode)
- def higher_neighbors(self):
- return [x.higher_node for x in self.lower_edges]
- def lower_neighbors(self):
- return [x.lower_node for x in self.higher_edges]
-
-class Edge(object):
- def __init__(self, n1, n2):
- if n1.nodeid < n2.nodeid:
- self.lower_node = n1
- self.higher_node = n2
- else:
- self.lower_node = n2
- self.higher_node = n1
-
-mapper(Node, nodes)
-mapper(Edge, edges, properties={
- 'lower_node':relation(Node,
-primaryjoin=edges.c.lower_id==nodes.c.nodeid, backref='lower_edges'),
- 'higher_node':relation(Node,
-primaryjoin=edges.c.higher_id==nodes.c.nodeid, backref='higher_edges')
- }
-)
-
-session = create_session()
-
-# create a directed graph like this:
-# n1 -> n2 -> n5
-# -> n7
-# -> n3 -> n6
-
-n1 = Node(1)
-n2 = Node(2)
-n3 = Node(3)
-n4 = Node(4)
-n5 = Node(5)
-n6 = Node(6)
-n7 = Node(7)
-
-n2.add_neighbor(n5)
-n3.add_neighbor(n6)
-n7.add_neighbor(n2)
-n1.add_neighbor(n3)
-n2.add_neighbor(n1)
-
-[session.add(x) for x in [n1, n2, n3, n4, n5, n6, n7]]
-session.flush()
-
-session.expunge_all()
-
-n2 = session.query(Node).get(2)
-n3 = session.query(Node).get(3)
-
-assert [x.nodeid for x in n3.higher_neighbors()] == [6]
-assert [x.nodeid for x in n3.lower_neighbors()] == [1]
-assert [x.nodeid for x in n2.lower_neighbors()] == [1]
-assert [x.nodeid for x in n2.higher_neighbors()] == [5,7]
-
-