3
from twisted.internet import reactor
5
from twisted.enterprise import adbapi, row, reflector, sqlreflector
9
""" This example show using twisted.enterpise.row to load objects from
10
a database and manipulate them.
16
print "got Rooms.", rooms
18
print "no rooms found!"
23
for child in room.furniture:
25
if hasattr(child, "childRows"):
26
for inner in child.childRows:
29
room.moveTo( int(random.random() * 100) , int(random.random() * 100) )
30
manager.updateRow(room).addCallback(onUpdate)
32
def gotFurniture(furniture):
42
newRoom.assignKeyAttr("roomId", kf.getNextKey())
44
newRoom.name = 'newRoom1'
45
newRoom.owner = 'fred'
51
#insert row into database
52
manager.insertRow(newRoom).addCallback(onInsert)
58
manager.deleteRow(newRoom).addCallback(onDelete)
62
return manager.loadObjectsFrom("furniture", whereClause=[("furnId",reflector.EQUAL,53)], forceChildren=1 ).addCallback(onSelected)
66
print "\ngot Furn:", f
67
if hasattr(f, "childRows"):
73
print "got more rooms", rooms
77
reactor.callLater(0.5, tick)
82
# use this line for postgresql test
83
dbpool = adbapi.ConnectionPool("pyPgSQL.PgSQL", database="test")
85
# use this line for SQLite test
86
#dbpool = adbapi.ConnectionPool("sqlite", db="test")
88
# use this line for Interbase / Firebird
89
#dbpool = adbapi.ConnectionPool("kinterbasdb", dsn="localhost:/test.gdb",user="SYSDBA",password="masterkey")
92
#dbpool = adbapi.ConnectionPool("MySQLdb", db="test", passwd="pass")
95
def kickOffTests(ignoredResult=0):
97
manager = sqlreflector.SQLReflector(dbpool, [RoomRow, FurnitureRow, RugRow, LampRow])
98
manager.loadObjectsFrom("testrooms", forceChildren=1).addCallback(gotRooms)
100
kf = KeyFactory(100000, 50000)
102
# make sure we can be shut down on windows.
103
reactor.callLater(0.5, tick)
104
reactor.callLater(0.4, kickOffTests)