Python 将数据放入google数据存储后必须刷新

Python 将数据放入google数据存储后必须刷新,python,google-app-engine,webapp2,Python,Google App Engine,Webapp2,我正在尝试为我的项目创建一个用户注册表单,但每次我尝试将数据放入google数据存储时,它都不会立即反映在数据库中 注册完成后,我重定向到欢迎页面。但是我必须在重定向后刷新页面,以便为用户获取相应的信息。为了解决这个问题,我将使用put语句两次。有人能告诉我一个更好的方法来解决这个问题吗 a=User(username=uname,pass\u hash=make\u secure(str(pswrd)),parent=users\u key()) a、 put() a、 put() 要实现与数

我正在尝试为我的项目创建一个用户注册表单,但每次我尝试将数据放入google数据存储时,它都不会立即反映在数据库中

注册完成后,我重定向到欢迎页面。但是我必须在重定向后刷新页面,以便为用户获取相应的信息。为了解决这个问题,我将使用put语句两次。有人能告诉我一个更好的方法来解决这个问题吗

a=User(username=uname,pass\u hash=make\u secure(str(pswrd)),parent=users\u key())
a、 put()
a、 put()

要实现与数据存储NDB客户端库的强一致读取,您可以执行“键查找”或祖先查询(如果需要获取多个最近存储的实体)

下面的示例将新来宾存储在/sign中,并使用最近创建的实体的事件(父)ID和url\u安全ID将请求重定向到根目录:

    # When accessed /sign we check if an Event with ID 1111 exists
    event_key = ndb.Key('Event', 1111)
    event = event_key.get()
    # If it does not exist we create one
    if event is None:
        event = Event(key=event_key, title=’Party’)
        event.put()

    # We store a new Guest
    name = '<SOME_RANDOM_STRING>'
    guest = Guest(name=name, parent=event_key)
    guest.put()
    print(guest)

    # And redirect the request to the main route with the information we need to fetch these entities
    # You could use the urlsafe() method for both, I chose to use separate methods just as an example
    self.redirect('/?' + urllib.urlencode(
        {
            'event_id': event_key.id(),
            'guest_id': guest.key.urlsafe()
            }))

为了实现与数据存储NDB客户端库的强一致性读取,您可以执行“密钥查找”或祖先查询(以防需要获取多个最近存储的实体)

下面的示例将新来宾存储在/sign中,并使用最近创建的实体的事件(父)ID和url\u安全ID将请求重定向到根目录:

    # When accessed /sign we check if an Event with ID 1111 exists
    event_key = ndb.Key('Event', 1111)
    event = event_key.get()
    # If it does not exist we create one
    if event is None:
        event = Event(key=event_key, title=’Party’)
        event.put()

    # We store a new Guest
    name = '<SOME_RANDOM_STRING>'
    guest = Guest(name=name, parent=event_key)
    guest.put()
    print(guest)

    # And redirect the request to the main route with the information we need to fetch these entities
    # You could use the urlsafe() method for both, I chose to use separate methods just as an example
    self.redirect('/?' + urllib.urlencode(
        {
            'event_id': event_key.id(),
            'guest_id': guest.key.urlsafe()
            }))

对这是因为最终的一致性。投两次也无济于事;你需要做的是按键获取项目。正如@DanielRoseman所说,数据存储的一致性往往是最终的,但有办法做到这一点。您能否更新您的问题,以向我们提供有关您在注册后最初如何检索用户数据的更多信息?我正在通过对数据存储进行简单的GQL查询来检索用户数据。另外@DanielRoseman您能告诉我如何通过密钥获取项目吗?请阅读pessolato链接的文档。如果您向我确认您使用的是哪个客户端库,我将很乐意提供一个关于如何执行强一致性祖先查询或“密钥查找”的示例。是的。这是因为最终的一致性。投两次也无济于事;你需要做的是按键获取项目。正如@DanielRoseman所说,数据存储的一致性往往是最终的,但有办法做到这一点。您能否更新您的问题,以向我们提供有关您在注册后最初如何检索用户数据的更多信息?我正在通过对数据存储进行简单的GQL查询来检索用户数据。另外@DanielRoseman您能告诉我如何通过密钥获取项目吗?请阅读pessolato链接的文档。如果您向我确认您使用的是哪个客户端库,我将很乐意提供一个关于如何执行强一致性祖先查询或“密钥查找”的示例。