Sto cercando di utilizzare couchdb.py per creare e aggiornare i database. Mi piacerebbe implementare le modifiche alle notifiche, preferibilmente in modalità continua. Eseguendo il codice di test pubblicato di seguito, non vedo come lo schema delle modifiche funzioni all'interno di python.notifiche cambio couchdb-python
class SomeDocument(Document):
#############################################################################
# def __init__ (self):
intField = IntegerField()#for now - this should to be an integer
textField = TextField()
couch = couchdb.Server('http://127.0.0.1:5984')
databasename = 'testnotifications'
if databasename in couch:
print 'Deleting then creating database ' + databasename + ' from server'
del couch[databasename]
db = couch.create(databasename)
else:
print 'Creating database ' + databasename + ' on server'
db = couch.create(databasename)
for iii in range(5):
doc = SomeDocument(intField=iii,textField='somestring'+str(iii))
doc.store(db)
print doc.id + '\t' + doc.rev
something = db.changes(feed='continuous',since=4,heartbeat=1000)
for iii in range(5,10):
doc = SomeDocument(intField=iii,textField='somestring'+str(iii))
doc.store(db)
time.sleep(1)
print something
print db.changes(since=iii-1)
Il valore
db.changes(since=iii-1)
restituisce le informazioni che è di interesse, ma in un formato da cui non ho trovato il modo di estrarre i numeri di sequenza o di revisione, o le informazioni del documento:
{u'last_seq': 6, u'results': [{u'changes': [{u'rev': u'1-9c1e4df5ceacada059512a8180ead70e'}], u'id': u'7d0cb1ccbfd9675b4b6c1076f40049a8', u'seq': 5}, {u'changes': [{u'rev': u'1-bbe2953a5ef9835a0f8d548fa4c33b42'}], u'id': u'7d0cb1ccbfd9675b4b6c1076f400560d', u'seq': 6}]}
nel frattempo, il codice sono molto interessato ad utilizzare:
db.changes(feed='continuous',since=4,heartbeat=1000)
Restituisce un oggetto generatore e non sembra fornire le notifiche così come arrivano, come CouchDB guide suggerisce ....
Qualcuno ha usato variazioni di CouchDB-pitone con successo?
Oltre a questi problemi, quando si utilizza un server remoto (ad es. Cloudant) vengono lanciati errori per il comando "since" oparg .... edit - questo sembra essere dovuto al fatto che cloudant non memorizza le revisioni come numeri interi, piuttosto come stringhe, il che rende l'argomento since ancora più confuso! – radpotato