~soren/nova/iptables-security-groups

« back to all changes in this revision

Viewing changes to vendor/Twisted-10.0.0/doc/core/examples/row_example.py

  • Committer: Jesse Andrews
  • Date: 2010-05-28 06:05:26 UTC
  • Revision ID: git-v1:bf6e6e718cdc7488e2da87b21e258ccc065fe499
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import random
 
2
 
 
3
from twisted.internet import reactor
 
4
 
 
5
from twisted.enterprise import adbapi, row, reflector, sqlreflector
 
6
 
 
7
from row_util import *
 
8
 
 
9
""" This example show using twisted.enterpise.row to load objects from
 
10
a database and manipulate them.
 
11
"""
 
12
 
 
13
manager = None
 
14
 
 
15
def gotRooms(rooms):
 
16
    print "got Rooms.", rooms
 
17
    if not rooms:
 
18
        print "no rooms found!"
 
19
        reactor.stop()
 
20
 
 
21
    for room in rooms:
 
22
        print "room  ", room
 
23
        for child in room.furniture:
 
24
            print "furn     ", child            
 
25
            if hasattr(child, "childRows"):
 
26
                for inner in child.childRows:
 
27
                    print "inner        ", inner
 
28
 
 
29
    room.moveTo( int(random.random() * 100) , int(random.random() * 100) )
 
30
    manager.updateRow(room).addCallback(onUpdate)
 
31
 
 
32
def gotFurniture(furniture):
 
33
    for f in furniture:
 
34
        print f
 
35
    reactor.stop()
 
36
        
 
37
def onUpdate(data):
 
38
    print "updated row."
 
39
    # create a new room
 
40
    global newRoom
 
41
    newRoom = RoomRow()
 
42
    newRoom.assignKeyAttr("roomId", kf.getNextKey())
 
43
    newRoom.town_id = 20
 
44
    newRoom.name = 'newRoom1'
 
45
    newRoom.owner = 'fred'
 
46
    newRoom.posx = 100
 
47
    newRoom.posy = 100
 
48
    newRoom.width = 15
 
49
    newRoom.height = 20
 
50
    
 
51
    #insert row into database
 
52
    manager.insertRow(newRoom).addCallback(onInsert)
 
53
 
 
54
def onInsert(data):
 
55
    global newRoom
 
56
    print "row inserted"
 
57
    print newRoom.roomId
 
58
    manager.deleteRow(newRoom).addCallback(onDelete)
 
59
 
 
60
def onDelete(data):
 
61
    print "row deleted."
 
62
    return manager.loadObjectsFrom("furniture", whereClause=[("furnId",reflector.EQUAL,53)], forceChildren=1 ).addCallback(onSelected)
 
63
 
 
64
def onSelected(furn):
 
65
    for f in furn:
 
66
        print "\ngot Furn:", f
 
67
        if hasattr(f, "childRows"):
 
68
            for l in f.childRows:
 
69
                print "   ", l
 
70
    reactor.stop()
 
71
 
 
72
def gotRooms2(rooms):
 
73
    print "got more rooms", rooms
 
74
    reactor.stop()
 
75
 
 
76
def tick():
 
77
    reactor.callLater(0.5, tick)
 
78
 
 
79
newRoom = None
 
80
 
 
81
 
 
82
# use this line for postgresql test
 
83
dbpool = adbapi.ConnectionPool("pyPgSQL.PgSQL", database="test")
 
84
 
 
85
# use this line for SQLite test
 
86
#dbpool = adbapi.ConnectionPool("sqlite", db="test")
 
87
 
 
88
# use this line for Interbase / Firebird
 
89
#dbpool = adbapi.ConnectionPool("kinterbasdb", dsn="localhost:/test.gdb",user="SYSDBA",password="masterkey")
 
90
 
 
91
# use this for MySQL
 
92
#dbpool = adbapi.ConnectionPool("MySQLdb", db="test", passwd="pass")
 
93
 
 
94
 
 
95
def kickOffTests(ignoredResult=0):
 
96
    global manager
 
97
    manager = sqlreflector.SQLReflector(dbpool, [RoomRow, FurnitureRow, RugRow, LampRow])
 
98
    manager.loadObjectsFrom("testrooms", forceChildren=1).addCallback(gotRooms)
 
99
 
 
100
kf = KeyFactory(100000, 50000)
 
101
 
 
102
# make sure we can be shut down on windows.
 
103
reactor.callLater(0.5, tick)
 
104
reactor.callLater(0.4, kickOffTests)
 
105
reactor.run()