2016-12-07 7 views
0

У меня есть сущность с ~ 50 тыс. Строк в Google Cloud Datastore, отдельно стоящая не GAE. Я начинаю разработку с GAE и хотел бы запросить этот существующий хранилище данных, не импортируя его в GAE. Мне не удалось найти способ подключения к существующему хранилищу данных.Запросить существующий Google Cloud Datastore из Google app engine

Базовый код изменен из Hello World и других руководств im, пытающихся работать как 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 с любезного продукта вместо моего существующего Datastore с продуктом уже определены, но я не могу найти, как сделать это соединение ,

ответ

1

Имеется только один Хранилище данных Google Cloud. У App Engine нет собственного хранилища данных - он работает с одним и тем же хранилищем данных Google Cloud.

Все объекты в хранилище данных хранятся для конкретного проекта . Если вы пытаетесь получить доступ к данным из другого проекта, вы не сможете увидеть его, не пройдя специальную проверку подлинности.

+0

Андрей, спасибо за разъяснение этого для меня. Приложение, с которым я работаю, находится в том же проекте, что и мой Datastore. Я снова просмотрю документацию, чтобы попытаться найти свою проблему. –

+0

Перейдите на консоль Google Cloud Platform (https://console.cloud.google.com) и проверьте, не видите ли вы свои данные (в разделе «Datastore> Entities»). –

0

Я не уверен, что именно вы пытаетесь выполнить, когда говорите, что вы would like to query this existing datastore without having to import it to GAE. Я предполагаю, что у вас есть проект A с хранилищем данных с 50 тыс. Строк, и вы начинаете проект B. И вы хотите получить доступ к проекту. Хранилище данных из проекта B. Если это так, и если вы пытаетесь доступ к хранилищу данных из другого проекта, то возможно this previous answer, который упоминает, что remote api может вам помочь.

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)