我正在尝试连接到我为在web应用中使用而创建的数据库对象。在
应用程序的python代码如下:
import os
import jinja2
import webapp2
import sqlite3
#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 bars_data():
# def createdb(self):
#barsdb = sqlite3.connect('bardatabase.db')
#barsdb.execute("DROP TABLE if exists bars")
#barsdb.execute("create table bars(name text, address text, state int)")
#barsdb.execute('Insert into bars (name, address, state) VALUES(?,?,?)',("Hoolies", '24 Glebe Rd', 10))
#barsdb.execute('Insert into bars (name, address, state) VALUES(?,?,?)',("Bar1", '25 Main St', 10))
#barsdb.execute('Insert into bars (name, address, state) VALUES(?,?,?)',('Cafe Doug', '35 Summer St.', 5))
#barsdb.execute('Insert into bars (name, address, state) VALUES(?,?,?)',("McMurphy", '25 F Street', 20))
#barsdb.commit()
class MainPage(Handler):
def get(self):
barsdb = sqlite3.connect('bardatabase.db')
query = barsdb.cursor()
bars_list = barsdb.execute("SELECT name FROM barsdb")
self.render("index.html")
app = webapp2.WSGIApplication([
('/', MainPage)
], debug=True)
我使用“class bars_data()”中的代码最初创建的数据库文件与其他源代码文件位于同一目录中,但由于我没有在应用程序中运行它,因此我将其注释掉。我不确定是否需要在运行应用程序时重新创建数据库/表,因此在这种情况下将其包括在内。我想从数据库访问酒吧名称,并使用jinja将其写入页面。在
我正在使用谷歌应用引擎来运行它。我知道我可以使用数据存储,但这似乎是创建静态数据库的更简单的方法。在
当我什么也不会渲染时,我会尝试运行应用程序。但是当我删除代码轮胎使数据库连接成为我的“索引.html“模板将再次在浏览器中呈现。我做错什么了?在
如果您将数据库文件作为应用程序文件的一部分提供,这应该可以工作。只需确保文件路径是正确的,如this answer所述。不要假设应用程序的工作目录和数据目录是相同的。在
相关问题 更多 >
编程相关推荐