如何从python中的另一个类访问在类中初始化的数据库?
如何实现MainPage类如何从python中的另一个类访问在类中初始化的数据库?,python,database,google-app-engine,web-applications,Python,Database,Google App Engine,Web Applications,如何实现MainPage类 import cgi import os import logging from google.appengine.api import users from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app from google.appengine.ext import db class Greeting(db.Model):
import cgi
import os
import logging
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
class Greeting(db.Model): #setting up database
a = db.StringProperty(multiline=True)
b = db.StringProperty(multiline=True)
c = db.StringProperty(multiline=True)
d = db.StringProperty(multiline=True)
class MainPage(webapp.RequestHandler):
def get(self):
##I want to access the content of the database here which is defined in Downloader class.
##For example let the value of greeting.a be assigned to alpha variable.
#Entering data to the database
class Downloader(webapp.RequestHandler):
def get(self):
greeting=Greeting()
greeting.a=self.request.GET.get('a')
greeting.b=self.request.GET.get('b')
greeting.c=self.request.GET.get('c')
greeting.d=self.request.GET.get('d')
greeting.put()
您可以在初始化时将Downloader对象传递给MainPage:
class MainPage(webapp.RequestHandler):
def __init__(self, downloader):
self.downloader = downloader
def get(self):
self.downloader.get()
这基本上是通过命名数据库并从另一个类引用它来解决的这是不可能的,因为self.request对象用于完全不同的webrequest对象。一种可能的解决方案是让MainPage继承Downloader。然后,MainPage不需要get(),但可以重写它。如果要重写get()方法,但仍然调用它,请在适用的代码中添加行“Downloader.get(self)”。而不是“class MainPage(webapp.RequestHandler):”将类定义为“class MainPage(Downloader):”。这还假设Downloader类与MainPage位于同一个模块中。我不清楚您在这里要做什么。您是否正在尝试读取以前请求中由
下载程序处理程序编写的问候语记录?是。这基本上就是我想做的。从MainPage类从问候语数据库检索数据这不起作用。。文件“C:\Program Files\Google\Google\appengine\Google\appengine\ext\webapp\u init\uuu.py”,第685行,在call handler=handler\u class()TypeError:\uuuuu init\uuuuuu()正好取2个参数(给定1个),换句话说,调用的是MainPage()
,而不是MainPage(downloader)
。@Mike DeSimone说了什么。使用它需要在初始化MainPage类时将下载程序传递给MainPage类。