#!/usr/bin/env python
from ZEO.ClientStorage import ClientStorage
from ZODB import DB
import transaction
class MyRemoteZODB(object):
def __init__(self, server, port):
server_and_port = (server, port)
self.storage = ClientStorage(server_and_port)
self.db = DB(self.storage)
self.connection = self.db.open()
self.dbroot = self.connection.root()
def close(self):
self.connection.close()
self.db.close()
self.storage.close()
# write data
mydb = MyRemoteZODB('localhost', 8100)
dbroot = mydb.dbroot
dbroot = mydb.dbroot
dbroot['a_number'] = 3
dbroot['a_string'] = 'Gift'
dbroot['a_list'] = [1, 2, 3, 5, 7, 12]
dbroot['a_dictionary'] = { 1918: 'Red Sox', 1919: 'Reds' }
dbroot['deeply_nested'] = { 1918: [ ('Red Sox', 4), ('Cubs', 2) ],1919: [ ('Reds', 5), ('White Sox', 3) ], }
transaction.commit()
mydb.close()
# read data
mydb = MyRemoteZODB('localhost', 8100)
dbroot = mydb.dbroot
for key in dbroot.keys():
print key + ':', dbroot[key]
mydb.close()
Как результат будет примерно такое:
a_list: [1, 2, 3, 5, 7, 12]
a_dictionary: {1918: 'Red Sox', 1919: 'Reds'}
a_string: Gift
Application:
a_number: 3
deeply_nested: {1918: [('Red Sox', 4), ('Cubs', 2)], 1919: [('Reds', 5), ('White Sox', 3)]}
Ну что, нравится? :)) О сокращении стоимости разработки при использовании вот такой штуки мне даже страшно думать! Даже если располагать базы только на SSD это будет все равно дико экономически эффективно.
Источник примеров: http://www.ibm.com/developerworks/aix/library/au-zodb/
No comments :
Post a Comment
Note: only a member of this blog may post a comment.