FastNetMon

Tuesday, 16 March 2010

Работа с Zeo из Python

Для начала ставим Zope/Zeo: http://phpsuxx.blogspot.com/2010/03/zope-2123-debian-5-lenny.html


#!/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.