Я сейчас играю с хранилищем данных Google App Engine и пытаюсь извлечь некоторые данные из базы данных приложений с помощью GQL.Google App Engine Datastore: извлечение данных с использованием запроса GQL
import os
import re
import random
import hashlib
import hmac
from string import letters
import webapp2
import jinja2
from google.appengine.ext import db
template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape=True)
class Handler(webapp2.RequestHandler):
def write(self, *a, **kw):
self.response.out.write(*a, **kw)
def render_str(self, template, **params):
t = jinja_env.get_template(template)
return t.render(params)
def render(self, template, **kw):
self.write(self.render_str(template, **kw))
class Users(db.Model):
name = db.StringProperty(required = True)
password = db.StringProperty(required = True)
email = db.EmailProperty(required = True)
address = db.PostalAddressProperty(required = True)
join_date = db.DateTimeProperty(auto_now_add = True)
dob = db.DateTimeProperty()
phone = db.PhoneNumberProperty()
class MainPage(Handler):
def get(self):
self.render("signup-form.html")
def post(self):
name = self.request.get("username")
password = self.request.get("password")
verify = self.request.get("verify")
email = self.request.get("email")
address = self.request.get("address")
phone = self.request.get("phone")
a = Users(name = name, password = password, email = email, address = address, phone = phone)
a.put()
p = Users.all()
ans = p.filter("name = :1", "Manas")
if(ans.email == "[email protected]"):
self.response.write("Email found")
else:
self.response.write("Not found")
app = webapp2.WSGIApplication([('/', MainPage)], debug=True)
Теперь уже есть атрибут "Манаса хранится в моей таблице пользователей, с«[email protected]», как его соответствующий электронный идентификатор. Поэтому, соответственно, я должен получить сообщение «Email found». Однако, я получаю эту ошибку:
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1535, in __call__
rv = self.handle_exception(request, response, e)
File "C:\Program Files\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1529, in __call__
rv = self.router.dispatch(request, response)
File "C:\Program Files\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Program Files\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1102, in __call__
return handler.dispatch()
File "C:\Program Files\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Program Files\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "F:\Python 2.7\engineapp1\HelloApp\appapp\main.py", line 48, in post
ans = p.filter("name = :1", "Manas")
File "C:\Program Files\Google\google_appengine\google\appengine\ext\db\__init__.py", line 2560, in filter
prop = match.group(1)
AttributeError: 'NoneType' object has no attribute 'group'
Что, по-видимому, неверно в моем запросе?
AttributeError: объект «Query» не имеет атрибута «email» .... это ошибка, которую я получаю после замены этой строки. –
@ManasChaturvedi, Эта ошибка вызвана следующей строкой. Потому что 'filter' возвращает итеративный (' Query') вместо экземпляра одной модели. Вам нужно повторить результат. Я обновил ответ. Проверьте это. – falsetru
Спасибо! Он работает сейчас. –