我有一个 SimpleDB 实例,我使用 boto for Python 更新和读取它:
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)
这符合预期。将在域中插入一个名为“UserID”且值为 val1 和 val2 的新项目。
现在,我面临的问题是,如果我在更新其属性后立即查询该域,
query = 'select * from `DomainName` where key1=val1'
check = domain.select(query)
itemName = check.next()['key2']
我会收到一个错误,因为找不到该行中的值。但是,如果我在写入和读取之间添加 time.sleep(1) 一切正常。
我怀疑这个问题是由于 put_attributes 向数据库发出写入信号的事实,但不会等到此更改已持久化。我也尝试过使用创建一个项目然后保存该项目(item.save())来编写,但没有取得多大成功。有谁知道在继续下一个操作之前如何确保值已写入 SimpleDB 实例?
谢谢。