gpt4 book ai didi

python - 获取插入对象的id

转载 作者:太空宇宙 更新时间:2023-11-04 10:48:44 24 4
gpt4 key购买 nike

我正在定义一个为用户建模的端点,如下所示。我可以通过 id 查询用户。但是如何在插入用户时获取该 ID?我的客户端是用 java 编写的,但我想知道如何使用 python 以及生成的 java 客户端库来检索 id。

from google.appengine.ext import endpoints
from google.appengine.ext import ndb
from protorpc import remote
from endpoints_proto_datastore.ndb import EndpointsModel

class User(EndpointsModel):
email = ndb.StringProperty(required=True)
phone_number = ndb.StringProperty()
reg_id = ndb.StringProperty()
created = ndb.DateTimeProperty(auto_now_add=True)

@endpoints.api(name='whereareyoudroid',
version='v1', description='Where Are You Users')
class UserApi(remote.Service):

@User.method(name='user.insert', path='user')
def insert(self, user):
user.put()
return user

@User.method(request_fields=('id',),
path='user/{id}',
http_method='GET', name='user.get')
def get(self, user):
if not User.from_datastore:
raise endpoints.NotFoundException('User not found.')
return user

最佳答案

首先回答你的问题:

默认情况下,您的请求和响应的消息架构将是您模型中的字段:emailphone_numberreg_id创建。正如在 simple get sample 中所做的那样,您可以更改此默认值以包含 id via

class User(EndpointsModel):
_message_fields_schema = ('id', 'email', 'phone_number',
'reg_id', 'created')
email = ndb.StringProperty(required=True)
...

或通过指定 response fields你想在 insert 方法中返回:

    @User.method(response_fields=('id', 'email', 'phone_number', 
'reg_id', 'created'),
name='user.insert', path='user')
def insert(self, user):
user.put()
return user

其次,您在 get 中有错字/错误:

语句 if not User.from_datastore: 将检查 User 类上的 User.from_datastore 属性对象是否为“truthy”,它是。您需要用户对象上此属性的实际值:user.from_datastore

关于python - 获取插入对象的id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15507435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com