2016-12-07 11 views
0

Google Cloud Datastoreに〜50k行のエンティティがあります。スタンドアローンでもGAEではありません。私はGAEで開発を開始しており、GAEにインポートすることなくこの既存のデータストアにクエリを実行したいと考えています。私は既存のデータストアKindに接続する方法を見つけることができませんでした。Googleのアプリケーションデータベースから既存のGoogle Cloud Datastoreをクエリする

Hello Worldやその他のガイドから変更された基本コードは、POCとして機能しようとしています。

import webapp2 
import json 
import time 
from google.appengine.ext import ndb 

class Product(ndb.Model): 
type = ndb.StringProperty() 

@classmethod 
def query_product(cls): 
    return ndb.gql("SELECT * FROM Product where name >= :a LIMIT 5 ") 

class MainPage(webapp2.RequestHandler): 
def get(self): 
    self.response.headers['Content-Type'] = 'text/plain' 

    query = Product.query_product() 

    self.response.write(query) 


app = webapp2.WSGIApplication([ 
('/', MainPage), 
], debug=True) 

返されるエラーは

TypeError: Model Product has no property named 'name' 

その代わりに、すでに定義された製品との私の既存のデータストアの種類の製品でGAEデータストアを使用しようとしていることは明らかようだが、私はその接続を作る方法を見つけるカントです。

答えて

1

Google Cloud Datastoreは1つだけです。 App Engineには独自のデータストアがありません。同じGoogle Cloud Datastoreで動作します。

データストア内のすべてのエンティティは、特定のプロジェクトに格納されます。別のプロジェクトからデータにアクセスしようとすると、特別な認証を行わずにデータを見ることができなくなります。

+0

Andrei、私にはそれを明確にしてくれてありがとう。私が働いているAppは、私のDatastoreと同じプロジェクトに入っています。ドキュメントをもう一度見て、私の問題を見つけようとします。 –

+0

Google Cloud Platformコンソール(https://console.cloud.google.com)にアクセスし、データが表示されていることを確認します(「データストア>エンティティ」の下にある)。 –

0

would like to query this existing datastore without having to import it to GAEと言ったときに達成しようとしていることはあまりにも明確ではありません。私は50キロ行のデータストアを持つプロジェクトAを持っており、プロジェクトBを開始していると推測しています。プロジェクトBからプロジェクトAのデータストアにアクセスしたいとします。別のプロジェクトからデータストアにアクセスすると、remote apiというメッセージが表示されるthis previous answerが多分お手伝いします。

0

以下は作業コードです。私はこの元の記事を作った頃にはかなり近づいていたが、私がローカルで自分のアプリケーションを実行していたために私がデータを取得していない理由があった。実際にコードをApp Engineにデプロイするとすぐに、Datastoreから問題は発生しませんでした。

import webapp2 
import json 
import time 
from google.appengine.datastore.datastore_query import Cursor 
from google.appengine.ext import ndb 



class Product(ndb.Model): 
    name = ndb.StringProperty() 


class MainPage(webapp2.RequestHandler): 
    def get(self): 
    self.response.headers['Content-Type'] = 'text/plain' 


    query = ndb.gql("SELECT * FROM Product where name >= 'a' LIMIT 5 ") 
    output = query.fetch() 

    #query = Product.query(Product.name == 'zubo - pre-owned - nintendo ds') 
    #query = Product.query() 
    #output = query.fetch(10) 
    self.response.write(output) 


app = webapp2.WSGIApplication([ 
('/', MainPage), 
], debug=True) 
関連する問題