Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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中的另一个类访问在类中初始化的数据库?_Python_Database_Google App Engine_Web Applications - Fatal编程技术网

如何从python中的另一个类访问在类中初始化的数据库?

如何从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):

如何实现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):  #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类。