Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在运行Python的Google App Engine上检查db是否包含1000个ID中的一个或多个_Python_Database_Google App Engine_Facebook Graph Api - Fatal编程技术网

在运行Python的Google App Engine上检查db是否包含1000个ID中的一个或多个

在运行Python的Google App Engine上检查db是否包含1000个ID中的一个或多个,python,database,google-app-engine,facebook-graph-api,Python,Database,Google App Engine,Facebook Graph Api,我有一个与Facebook集成的应用程序。我正在获取一个用户facebook好友ID列表,并希望查询我的后端,以了解哪些用户已注册我的服务 玩家在使用其唯一FBID注册时插入 player = Player.get_or_insert(FBID) 如果我的后端接收到数千个FBID的数组,那么查询数据库以查找数据库中存在哪些FBID的最佳方法是什么 我可以在阵列中运行并从ID=FBID的玩家中进行选择 for FBID in FBIDs: player = Player.get_by_i

我有一个与Facebook集成的应用程序。我正在获取一个用户facebook好友ID列表,并希望查询我的后端,以了解哪些用户已注册我的服务

玩家在使用其唯一FBID注册时插入

player = Player.get_or_insert(FBID)
如果我的后端接收到数千个FBID的数组,那么查询数据库以查找数据库中存在哪些FBID的最佳方法是什么

我可以在阵列中运行并从ID=FBID的玩家中进行选择

for FBID in FBIDs:
    player = Player.get_by_id(FBID)
    if player is not None:
         responseArray.append(player)
但这将导致N个查询,这不是非常理想的,因为如果请求数据库,可能会有成千上万的玩家这样做


执行类似“从玩家中选择ID==FBID1或ID==FBID2或FBID3…”的查询是否更经济划算?

如果使用FBID作为实体密钥ID,您将能够通过密钥列表获得多个密钥。通过了解如何构造密钥,这可能会更有效

分配密钥id:

ndb.get_多键,**ctx_选项 获取由传递的键序列标识的实体。 返回一个列表。每个列表项都是模型实例,如果找不到键,则为无

您可以使用appstats评估不同的方法:

如果使用FBID作为实体密钥id,则可以使用密钥列表获取多个密钥。通过了解如何构造密钥,这可能会更有效

分配密钥id:

ndb.get_多键,**ctx_选项 获取由传递的键序列标识的实体。 返回一个列表。每个列表项都是模型实例,如果找不到键,则为无

您可以使用appstats评估不同的方法:

键序列,这是一个FBID数组?比如[21491322348238423883482384,…]?不完全是。我假设appengine端会有类似用户实体的东西。创建时,可以将id设置为FBID。然后,在检查它是否存在时,使用该已知id创建一个或多个用户密钥。此用户密钥列表将传递给获取多个用户密钥。引用的SO url显示如何设置实体id。是。当我使用ndb构建键时工作。键“播放器”,键的FBID序列,这是一个FBID数组?比如[21491322348238423883482384,…]?不完全是。我假设appengine端会有类似用户实体的东西。创建时,可以将id设置为FBID。然后,在检查它是否存在时,使用该已知id创建一个或多个用户密钥。此用户密钥列表将传递给获取多个用户密钥。引用的SO url显示如何设置实体id。是。当我使用ndb.Key'Player',FBID构建密钥时工作