J'ai une instance SimpleDB que je mets à jour et lu à l'aide boto pour Python:Faire des changements persistants dans Boto
sdb = boto.connect_sdb(access_key, secret_key)
domain = sdb.get_domain('DomainName')
itemName = 'UserID'
itemAttr = {'key1': 'val1', 'key2': val2}
userDom.put_attributes(itemName, itemAttr)
Cela fonctionne un prévu. Un nouvel élément avec le nom 'UserID' et les valeurs val1 et val2 seront insérés dans le domaine.
Maintenant, le problème que je suis confronté est que si je requête domaine juste après la mise à jour de ses attributs,
query = 'select * from `DomainName` where key1=val1'
check = domain.select(query)
itemName = check.next()['key2']
je vais faire une erreur parce que les valeurs de la ligne n'a pas pu être trouvé. Cependant, si j'ajoute un time.sleep (1) entre l'écriture et la lecture tout fonctionne.
Je suppose que ce problème est dû au fait que put_atributes signale la base de données pour l'écriture, mais n'attend pas que cette modification ait été rendue persistante. J'ai également essayé d'écrire en utilisant la création d'un élément, puis en enregistrant cet élément (item.save()) sans grand succès. Est-ce que quelqu'un sait comment je peux m'assurer que les valeurs ont été écrites dans l'instance de SimpleDB avant de passer aux opérations suivantes?
Merci.
Merci, cela a fonctionné parfaitement. J'ai rencontré des problèmes en utilisant constant_read parce que j'utilisais boto version 1.9b, mis à niveau vers 2.3.0 et résolu. – angelrh